Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DOM异常:追加到函数时出现层次结构\u请求\u错误(3)_Javascript_Jquery_Html_Window.open - Fatal编程技术网

Javascript DOM异常:追加到函数时出现层次结构\u请求\u错误(3)

Javascript DOM异常:追加到函数时出现层次结构\u请求\u错误(3),javascript,jquery,html,window.open,Javascript,Jquery,Html,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.me

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

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
});
this.jNotifObj=$(''+this.opts.message+''+this.opts.actionTitle1+''+this.opts.actionTitle2+'').hide();
$(this.jNotifObj).appendTo(this.parentWindow.document.body).fadeIn('fast',function(){
//这里的代码
//测试代码
});
我得到一个错误,如下所示:

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异常:层次结构\u请求\u错误(3)


我已经参考了前面关于这个错误的问题。但是又失败了。。。请帮我解决这个问题。提前谢谢。

这是一个复杂的话题,我已经做了一些研究。IE中有几个错误是由同一个问题引起的,您所犯的错误就是其中之一

尽管现代浏览器在实现细节上有所不同,但它们都同意在当前版本中对windows之间的访问设置安全限制。Chrome是目前唯一允许以您的方式访问父窗口的浏览器(当且仅当两个窗口都指向同一域上的位置时)

我没有在互联网上找到列出什么是可能的,什么是不可能的来源,但从我所做的,我认为你可以做的是:

  • 通过引用将对象传递给其他窗口
  • 按值将简单值(字符串、整数等)传递给其他窗口
  • 你不能做的事:

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

    有关示例,请参见:

    此系统允许您以安全的方式在浏览器窗口之间进行通信。我用它做了很多尝试,基本上你可以把任何可以转换成JSON的东西都转换成JSON。另一方面,这意味着如果不能将其转换为JSON,就不能发送它

    还请注意,您将始终必须提供目标域。如果您不关心要使用的targetDomain,则必须提供“*”。如果您不提供任何信息,则不会发送消息


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

    为什么
    .hide()
    这个.jNotifObj的末尾是否有?什么是parentWindow?我想我知道这里有什么问题,只是为了验证一下,您正在当前版本中使用IE?this.parentWindow是另一个函数的主窗口对象。您不能在一个文档的上下文中创建DOM节点,然后尝试将其附加到其他文档中。您必须使用
    importNode
    将节点导入到目标文档的上下文中,或者已经在该文档的上下文中创建了节点。确定。谢谢你,克里斯。我会检查代码,很快会打电话给你。。。谢谢你的努力。你能帮我找到如何创建jquery实例的新上下文吗????我使用了这个方法this.parentWindow.jQuery=this.parentWindow.$=jQuery;这是一个好方法吗???我认为这不是一个好方法。最好的方法是在父窗口中单独加载jquery,向父窗口发送消息,然后在父窗口中执行所有jquery操作。我不认为你写的东西会起作用,因为你仍然会在父窗口的DOM上操作(通过jquery)。不,窗口之间的任何通信,无论我是父窗口还是子窗口,都将在将来通过postMessage()方法完成。