更改iframe窗口的父级

时间:2014-05-31 23:30:34

标签: javascript internet-explorer

更改iframe窗口的父级

是否可以更改iframe的contentWindow.parent。我想做的是:

window.document.getElementById('myframe').contentWindow.parent = window.document.getElementById('myframe').contentWindow.window

以上适用于Firefox,Chrome,Opera,但不适用于IE。

这样做的原因我的iframe(让我们称之为TOP)本身就有iframe(让我们称之为SUBWINDOWS),并且它们都有Javascript调用“parent.document.getElementById”等等。当您在顶级窗口中时,parent.document.getElementId与document.getElementById相同,因为对于顶级窗口parent == window。对于iframe SUBWINDOWS,parent.document引用顶级窗口的文档。看起来有点草率,但它的工作原理,依赖于父级==窗口的顶级窗口。

但是现在顶级窗口TOP现在是更大页面中的iframe(我们称之为BIG)。在TOP中使用parent.document.getElementById的Javascript现在指的是BIG的文档,而在它引用TOP的文档之前。

因此,一个快速简单的解决方法是将iframe的父级更改为指向自身。这确实适用于Firefox,Chrome,Opera。

有关如何让它适用于IE的任何想法?

-

我的测试代码是:

test.html:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>

<body>
<p>Text outside iframe</p>
<iframe id="myframe" src="test_more.html"></iframe>
</body>
</html>

test_more.html:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>

<body>
<p>Text inside iframe</p>
<input type="button" value="window/parent" onclick="alert('window.location.href = ' + window.location.href + '\nparent.location.href = ' + parent.location.href);"/>
</body>
</html>

将这些文件放在Web服务器上以避免相同的源策略错误,并转到类似localhost:6144 / test / test.html的URL。

0 个答案:

没有答案