假设我有一个对包含在 IFRAME 内的文档对象的引用。如何获取对容器 IFRAME 的引用? .parentNode 和 .ownerDocument 都返回 null。
请注意,没有可用的上下文信息(例如“window.xxx”等解决方案将不起作用) - 所有可用的都是对文档对象的引用。
Thanks
文档不直接与其父文档相关。您确实需要参考window
为了拿起parent
.
DOM Level 2 Views 属性document.defaultView会给你window
在大多数现代网络浏览器中,但在 IE 中你必须使用非标准document.parentWindow反而。 (一些较旧的或更不起眼的浏览器不实现这些属性中的任何一个,在这种情况下您就会陷入困境。)
这会给你window
父文档的。如果您想获得<iframe>
保存您的文档,您必须遍历页面上的所有 iframe 并检查所包含的文档是否是您自己。
同样,从 iframe 元素返回到子元素的方法在 IE 中是完全不同的(iframe.contentWindow
给你window
) 与 DOM 标准和其他标准 (iframe.contentDocument
给你document
).
所以,像这样:
function getFrameForDocument(document) {
var w= document.defaultView || document.parentWindow;
var frames= w.parent.document.getElementsByTagName('iframe');
for (var i= frames.length; i-->0;) {
var frame= frames[i];
try {
var d= frame.contentDocument || frame.contentWindow.document;
if (d===document)
return frame;
} catch(e) {}
}
}
(The try...
是为了避免当文档访问由于另一个 iframe 位于不同域上而失败时导致循环崩溃,从而导致同源策略错误。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)