3

我需要从 iframe 的 DOM 树中提取一个元素并将其放入父文档的 DOM 树中。

这适用于大多数现代浏览器,但不适用于 IE7。它生成Error: Invalid argument.

测试用例

ie7test.html

<html>
<head></head>
<body>
        <div id="containerrrr">
                 <iframe id="iframe_element" src="ie7testiframe.html"></iframe>
        </div>
</body>
</html>

ie7testiframe.html:

<html>
<head></head>
<body>
    <div id="target_element">target</div>
    <script type="text/javascript">
var iframe_element = window.parent.document.getElementById("iframe_element");
var target_element = window.document.getElementById("target_element");
iframe_element.parentNode.insertBefore(target_element, iframe_element);
</script>
</body>
</html>
4

1 回答 1

0

您正试图在文档“准备好”之前访问和修改 DOM。虽然现代浏览器有尊严地处理这样的任务(只要引用的元素已经被解析 - 你的例子很好),试图在 IE 中操作未关闭的节点会导致错误。

一个普遍接受的处理这个问题的方法是推迟你的脚本的执行,直到文档准备好被操作。像 jQuery 这样的库为这种延迟提供了语法糖

于 2013-09-19T09:33:56.947 回答