将DOM节点移动到弹出窗口

时间:2012-08-08 16:14:08

标签: 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.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>

2 个答案:

答案 0 :(得分:1)

为了能够使用iframe和新窗口,您应该在写入()之前使用addres:about:blank初始化它们。另请注意,加载/打开窗口/框架需要时间,因此您无法立即写入它们。设置超时,或检查onload。 有关详细信息,请参阅this answer

祝你好运!

答案 1 :(得分:1)

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

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

使用jquery $(el).html(table.html());解决了这个问题。