jquery.append()iframe IE问题

时间:2010-07-29 11:18:25

标签: jquery iframe append

也许这是一个错误,但我无法使用jquery(IE7)从iframe访问外部文档。

这是一个非常简单的例子:

热门文件:

<html>
<head>
</head>
<body>
<iframe src="test2.html" id="UserIFrame" name="UserIFrame">
</body>
</html>

和儿童iframe:

<html>
<head>
<script type="text/javascript" src="styles/genevadesign_jquery-1.4.1.js"></script>
<script type="text/javascript">
       function doit(){
          $('body',top.document).append($('#test'));
          $('#test',top.document).fadeIn(300);
      }
</script>
</head>
<body>
<div id="test">test</div>
<input type="button" onclick="doit();"/>
</body>
</html>

如您所见,我尝试从内框访问顶级文档,如下所示:

$('body',top.document).append($('#test'));

但这在IE7“Invalid Argument”中不起作用。它在同一个文档中工作,但是一旦我引用另一个文档,它就会停止工作。

PS。 Gecko Browser可以处理这个问题。到目前为止只是IE7无法这样做。

2 个答案:

答案 0 :(得分:4)

问题仅出现在IE中,并且源于无法在窗口之间创建节点和移动节点(这是一种令人惊讶的好方法)。

考虑以下示例:

$("<iframe/>").append("<div/>");

在IE7中,这将导致错误 - 因为元素应该使用iframe.ownerWindow.document创建,而不是使用document.createElement方法或window.ownerDocument.createElement方法创建。它发生在每个DOM操作方法中。 IE7也不支持importNode / adoptNode方法。

因此,通过JS创建对象并进行操作,耶!

答案 1 :(得分:0)

尝试使用“window.parent