【问题标题】:Get iframe of given ID获取给定 ID 的 iframe
【发布时间】:2013-11-03 03:30:57
【问题描述】:

如果知道 iframe 的 ID,如何在页面上选择 iframe DOM 对象?假设页面上可能有多个 iframe,而您不知道有问题的 iframe 的位置,也请不要使用 jQuery 解决方案。我想出了以下内容,但是,我希望它可以更简单。

编辑。我正在尝试获取 DOM 对象,以便可以访问 window.frames[0].innerHeight 等属性

function getIframe(id) {
    var iframe=null;
    for (var i = window.frames.length - 1; i >= 0; i--) {
        if(window.frames[i].frameElement.id==id){iframe=window.frames[i];break;}
    }
    return iframe;
}

【问题讨论】:

  • @RGraham 你是什么意思?
  • 我正在寻找代表 iframe 的对象。例如,window.frames[0] 将返回页面上第一个 iframe 的对象。另一方面,document.getElementById("myIFrame")window.frames['myIFrame'] 将返回 iframe 的 HTML。抱歉,如果我的描述使用了不正确的命名法,因为 iframe 对我来说仍然是新的。谢谢

标签: javascript dom iframe


【解决方案1】:

看到这个答案:

Access iframe elements in JavaScript

window.frames['myIFrame']

编辑:

我在FF和Chrome上做了一些测试,得出以下结论。

window.frames["myFrame"] 返回:

    `[object HTMLIFrameElement]` when on FF (v24)
    `[object Window]` when on Chrome (v 30.0.1599.101)

我们可以为HTMLIFrameElement属性contentWindow做一个这样的控件来获取iframeWindow

var myFrame = (window.frames["myFrame"].contentWindow ? window.frames["myFrame"].contentWindow : window.frames["myFrame"])

这种方式在变量 myFrame 中存储了Window 对象。

如果现在我们想要获取 DOM 元素 HTMLIFrameElement,我们可以简单地这样做:

var domElement = myFrame.frameElement

希望这会有用。

【讨论】:

  • 这与document.getElementById("myIFrame") 相同。我正在尝试获取 DOM 对象。抱歉不清楚。
  • 也许我遗漏了一些东西,但在您的示例中它不会将 innerHeight 显示为未定义吗?请看jsfiddle.net/VQ5ar/2
  • @user1032531 抱歉,仅在 Chrome 中测试过...检查一下,这里有 DOM 对象 http://jsfiddle.net/VQ5ar/4/。它适用于 Chrome 和 Firefox,IE 未经测试。有关 HTMLIFrameElement 的更多信息,请参阅https://developer.mozilla.org/en/docs/Web/API/HTMLIFrameElement
  • 我仍然没有得到正确的结果。请参阅jsfiddle.net/VQ5ar/10
  • @user1032531 如果您想要 innerHeight 或其他检查文档,您的问题标题是“获取给定 ID 的 iframe”,指定您需要 DOM 对象并且您有答案。你只需要选择最好的一个。如果您想在 iframe 或其他内容中获取元素,请针对特定需求提出新问题。
【解决方案2】:
var el = document.querySelector('#test');

var matches = el.querySelectorAll('iframe');

阅读更多:http://slides.html5rocks.com/#new-selectors

【讨论】:

  • 这将返回 iframe 的节点列表。给定 ID,如何获取特定的 iframe 对象?另外,我是否需要将 #test 包裹在所有潜在的 iframe 周围?
  • 你可以使用 querySelector("#idOfmyFrame");
猜你喜欢
  • 2015-12-29
  • 1970-01-01
  • 2012-01-21
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多