DOM异常:HIERARCHY_REQUEST_ERR(3)而appendTo函数

时间:2014-02-24 08:13:42

标签: javascript jquery html html5 window.open

我正在尝试在窗体中创建一个弹出窗口,如下所示:

this.jNotifObj = $('<div class="notify-osd DialogInner"><div class="imgClose" onclick="$(this).parent().hide();"></div><div style="Float:left;max-width:50%;overflow:hidden;"><h2>' + this.opts.message + '&nbsp;</h2></div><div id=divAction1  style="Float:left;max-width:20%;padding-left:10px;overflow:hidden;"><h3>' + this.opts.actionTitle1 + '</h3></div><div id=divAction2  style="Float:left;max-width:20%;padding-left:10px;overflow:hidden;"><h3>' + this.opts.actionTitle2 + '</h3></div></div>').hide();

 $(this.jNotifObj).appendTo(this.parentWindow .document.body).fadeIn('fast', function () {
// codes here
// test code
});

我收到如下错误:

DOM异常:HIERARCHY_REQUEST_ERR(3)

我之前提到过有关此错误的问题。但又失败了......请帮助我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个很复杂的话题,我已经进行了一些研究。由于同一个问题导致IE中存在多个错误,而您所遇到的错误就是其中之一。

即使现代浏览器的实现细节不同,他们都同意对当前版本的Windows之间的访问进行安全限制。 Chrome是目前唯一允许以您的方式访问父窗口的浏览器(当且仅当两个窗口都指向同一域中的位置时)。

我没有在互联网上找到一个来源列出可能的和不可能的,但是根据我的想法,我认为你可以做的是:

  1. 通过引用将对象传递给其他窗口
  2. 通过值
  3. 将简单值(字符串,整数等)传递给其他窗口

    你不能做什么:

    1. 访问和操作其他窗口上的DOM(我认为这是你问题的一部分)
    2. 调用通过引用传递的对象的函数(也可能是您的问题的一部分)
    3. 我的解决方案(可能是将来唯一可用的解决方案)是postMessage()

      请参阅示例:http://javascript.info/tutorial/cross-window-messaging-with-postmessage

      此系统允许您以安全的方式在浏览器窗口之间进行通信。我尝试了很多东西,底线基本上是你可以转移任何你可以转换为JSON的东西。另一方面,这意味着如果您无法将其转换为JSON,则无法发送。

      另请注意,您必须始终提供目标域名。如果您不关心使用哪个targetDomain,则必须提供&#39; *&#39;。如果您没有提供任何消息,则不会发送消息。

      因此,对于您的情况,这意味着您必须向将要侦听该消息的parentWindow发送消息。当它收到该消息时,它将执行您想要实现的任何内容。