Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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节点移动到弹出窗口_Javascript_Jquery_Dom_Popup - Fatal编程技术网

Javascript 将DOM节点移动到弹出窗口

Javascript 将DOM节点移动到弹出窗口,javascript,jquery,dom,popup,Javascript,Jquery,Dom,Popup,我正在尝试将DOM节点从“根”页面移动到通过window.open()创建的新弹出窗口。这是我正在使用的代码 var win = window.open('/Search/Print', 'printSearchResults'), table = $('#printTable'); win.document.close(); setTimeout(function () { var el = win.document.createElement("table"); el

我正在尝试将DOM节点从“根”页面移动到通过
window.open()
创建的新弹出窗口。这是我正在使用的代码

var win = window.open('/Search/Print', 'printSearchResults'),
    table = $('#printTable');
win.document.close();
setTimeout(function () {
    var el = win.document.createElement("table");
    el.innerHTML = table.html();
    win.document.body.appendChild(el);
}, 40);
它在Chrome中工作,但在IE8中,我收到以下错误:“未知运行时错误。”

我也试过这样做:

var p = window.open('/Search/Print', 'printSearchResults'),
    table = $('#printTable');
setTimeout(function () {
    p.document.body.appendChild(table.clone(false)[0]);
}, 100);
这样做,我在IE8中收到“不支持这样的接口”。同样,Chrome也可以正常工作

有人有办法做到我想达到的目标吗

为了完整起见,以下是弹出窗口的HTML:

<!DOCTYPE html>
  <html>
  <head>
      <title>Print Results</title>
  </head>
  <body>
  </body>
</html>

打印结果

为了能够使用iFrame和新窗口,在向它们写入()之前,应该使用addres:about:blank对它们进行初始化。另外请注意,加载/打开窗口/框架需要时间,因此您不能立即向它们写入。设置一个超时,或者检查onload。 有关更多信息,请参阅

祝你好运

我在IE9(和IE8/7浏览器模式)上测试了您的代码

而不是
el.innerHTML=table.html()


使用jquery
$(el.html(table.html())修复了问题。

我不知道这是否是问题所在,但是任意的
setTimeout()
调用是处理异步负载的一种非常糟糕的方法。尝试为新窗口使用
onload
处理程序。