Javascript 将DOM节点移动到弹出窗口
我正在尝试将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
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
处理程序。