Mel*_*var 6 javascript css iframe dom
假设我有一个文档对象的引用,它包含在IFRAME中.如何获得容器IFRAME的引用?.parentNode和.ownerDocument都返回null.
请注意,没有可用的上下文信息(例如'window.xxx'之类的解决方案不起作用) - 所有可用的都是对文档对象的引用.
谢谢
bob*_*nce 12
文档未直接连接到其父文档.你需要一个参考window,以便拿起parent.
DOM Level 2 Views属性document.defaultView将为您window提供大多数现代Web浏览器,但在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) {}
}
}
Run Code Online (Sandbox Code Playgroud)
(这try...是为了避免因文档访问因另一个iframe位于不同域而导致文档访问失败而导致环路崩溃,从而导致同源策略错误.)
| 归档时间: |
|
| 查看次数: |
9603 次 |
| 最近记录: |