jquery.append() Iframe IE 问题

标签 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“无效参数”中不起作用。它在同一个文档中工作,但是一旦我引用另一个文档,它就停止工作。

PS。 Gecko 浏览器可以处理这个问题。目前只有IE7还无法做到这一点。

最佳答案

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

考虑以下示例:

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

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

这样就只剩下通过 JS 创建对象并进行操作了,耶!

关于jquery.append() Iframe IE 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3361905/

相关文章:

javascript - 获取 keyup 事件的前一个值

javascript - 是否可以使用 IFRAME(无需重新加载页面)来模拟响应式设计的方向和尺寸变化?

swift - 通过按下来更改空数组中 uiimageview 的颜色

将字母 append 到文件末尾的 C 程序

javascript - 将变量值与元素值进行比较

javascript - 如果第一次未完成,则防止第二次启动功能

jquery - 如何部署 Bower 安装的包?

java - Android 如何在 android iframe webview 中传递 url?

javascript - ckeditor rollIntoView 到编辑器内的 div 元素

javascript - 添加来自 js 中输入的值