我正在尝试将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>
答案 0 :(得分:1)
为了能够使用iframe和新窗口,您应该在写入()之前使用addres:about:blank初始化它们。另请注意,加载/打开窗口/框架需要时间,因此您无法立即写入它们。设置超时,或检查onload。 有关详细信息,请参阅this answer。
祝你好运!答案 1 :(得分:1)
我在IE9(和IE8 / 7浏览器模式)上测试了你的代码。
而不是el.innerHTML = table.html();
使用jquery $(el).html(table.html());
解决了这个问题。