【问题标题】:How do I check if a textfield in iframe is empty?如何检查 iframe 中的文本字段是否为空?
【发布时间】:2012-12-29 02:28:01
【问题描述】:

这个问题总结得差不多了。我正在尝试做一些类似于 Gmail 的事情,如果您在文本字段中输入了内容,那么网站会提示您确认是否要离开该页面。

但是如果有问题的文本字段位于 iframe 中怎么办?显然我可以为 iframe 分配一个 id,但是是否有任何 javascript 命令或可以检查 iframe 中的字段是否为空的东西?这甚至可能吗?

编辑: iframe 源和嵌入 iframe 的页面来自同一个域。

【问题讨论】:

  • 请评论页面和IFrame是否在同一个域中。旁注:问题中不需要签名...
  • 我对签名不好。是的,iframe 和页面在同一个域中。

标签: javascript iframe textfield


【解决方案1】:
var value = document.getElementById('iframeID').contentDocument
                    .getElementById('theTextBoxId').value;

是的,有可能,您只需要使用contentDocument 访问<iframe> 文档。

从 DOM iframe 元素,脚本可以通过 contentWindow 属性访问包含的 HTML 页面的窗口对象。 contentDocument 属性引用 iframe 内的文档元素(相当于 contentWindow.document),但 IE8 之前的 Internet Explorer 版本不支持。

尝试访问框架内容的脚本受同源策略的约束,如果从不同域加载,则无法访问其他窗口对象中的大部分属性。

MDN

【讨论】:

  • +1。请注意,仅当 IFrame 的页面和内容来自同一域时,此类代码才有效。
  • @AlexeiLevenkov,谢谢,我将它添加到下一位访问者的答案中,尽管 OP 写到他的具体情况他没有这个问题。
  • 谢谢,这是对这个问题的最佳答案。我认为 Kolink 的建议更适合我的情况。我以前没想过这样做。
【解决方案2】:

使用 JQuery 可以访问 iframe 内容:

$("#iFrame").contents().find("#text")

【讨论】:

    【解决方案3】:

    只需设置onbeforeunload,就好像 iframe 页面是顶级页面一样。如果您尝试在父框架或子框架中导航离开,则会被确认中断。

    【讨论】:

      猜你喜欢
      • 2015-12-28
      • 2014-07-28
      • 2016-11-04
      • 2021-07-01
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      相关资源
      最近更新 更多