我有一个包含多个 iframe 的页面。其中一个 iframe 具有来自不同域的页面。在此 iframe 中还有另一个 iframe,其中包含来自父域的页面。
my page from mydomain.com
-> an iframe
-> iframe "#foo" from another-domain.com>
-> iframe "#bar" from mydomain.com
-> another iframe
我需要获取对主页内“#foo”节点的引用。安全模型应该允许我这样做,因为“#bar”与主页具有相同的域。所以我正在做的是遍历 window.top
数组并将每个元素与当前为“#bar”窗口对象的 window
对象进行比较。我的测试代码如下:
for (var i = 0; i < top.length; i++) {
for (var j = 0; j < top[i].length; j++) {
if (top[i][j] == window) {
alert("The iframe number " + i + " contains me");
}
}
}
这在所有浏览器中都能正常工作,但 Internet Explorer 6 在访问 top[i][j]
时会引发安全错误。关于如何在 IE6 上解决此问题的任何想法?
谢谢!
最佳答案
看起来 IE 不满意您访问 try[i]
的任何属性,因为它属于不同的安全上下文,即使您正在访问的属性将处于相同的安全之下上下文作为脚本。
你可能在这里运气不好。但是,您是否尝试过更换:
- 尝试[i]
- 尝试[i][j]
与:
- try.frames[i]
- try.frames[i].frames[j]
这应该差不多。这是一个远景,我不知道它是否会奏效,但它可以。
关于javascript - 找出脚本在哪个 iframe 中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2755292/