<iframe>和它的文档之间的关系是单向的吗?</iframe>

时间:2012-06-28 17:14:39

标签: javascript jquery dom iframe dom-traversal

您可以使用HTMLIFrameElement

document属性获取<iframe> contentDocument个对象的节点

但我无法找到让<iframe>退出节点的方法 <iframe>和它的文件之间的关系只是一种方式吗? 如果是,为什么?

A non working DEMO:

var iframe = document.getElementById('iframe');
var doc = iframe.contentDocument || iframe.contentWindow.document;

var div = doc.getElementsByTagName('div')[0];

console.log('Did we find the iframe? ' + ($(div).closest('iframe').length > 0));​
// Output: "Did we find the iframe? false"

2 个答案:

答案 0 :(得分:5)

iframe元素与document元素不同div(它是主页面中的元素)(它是iframe页面中的元素)。

您可以像这样获取iframe元素:

iframe.contentWindow.frameElement === iframe

或者在iframe脚本环境中:

window.frameElement

或使用div

div.ownerDocument.defaultView.frameElement === iframe

Updated demo

答案 1 :(得分:0)

事情是,对于(div)行中的console.log,它们是框架的一部分,他们不知道它们在框架中,因此.closest('iframe')将为空。