Javascript Safari document.write()可选

Javascript Safari document.write()可选,javascript,Javascript,我正在用javascript创建一个新窗口,并使用document.write(): var windowContent=''; windowContent+=“” windowContent+=''; windowContent+=“” windowContent+=''; windowContent+=''; windowContent+=''; var printWin=window.open(“”,'newWindow','width=100,height=100'); printWin

我正在用javascript创建一个新窗口,并使用
document.write()

var windowContent='';
windowContent+=“”
windowContent+='';
windowContent+=“”
windowContent+='';
windowContent+='';
windowContent+='';
var printWin=window.open(“”,'newWindow','width=100,height=100');
printWin.document.open();
printWin.document.write(windowContent);
printWin.document.close();
printWin.focus();
printWin.print();
setTimeout(函数(){
printWin.close();
}, 100);
在大多数浏览器中,这很好,但在Safari6.0.2中,行
printWin.document.write(windowContent)
偶尔会使浏览器崩溃,而其他时候什么也不做,导致出现空白窗口


除了
document.write(),还有其他选择吗我应该用它来代替吗?通过谷歌搜索,一般的建议似乎是使用
document.body.appendChild(),但文档没有任何要附加的内容。

非常确定窗口在加载时有一个body元素:
printWin.onload=function(){console.log(document.body);}
您可以尝试删除
document.open()
语句,因为文档可能已经打开。@NULL-我收到错误信息“试图在不存在节点的上下文中访问该节点。”当使用document.body.appendChild();@RobG-时,这没有什么区别。一种方法是在同一个域上创建一个空html页,打开它并用代码注入它。
var windowContent = '<!DOCTYPE html>';
windowContent += '<html>'
windowContent += '<head><title></title></head>';
windowContent += '<body>'
windowContent += '<img src="' + dataUrl + '" width="670px" style=">';
windowContent += '</body>';
windowContent += '</html>';
var printWin = window.open('','newWindow','width=100,height=100');
printWin.document.open();
printWin.document.write(windowContent);
printWin.document.close();
printWin.focus();
printWin.print();
setTimeout(function() {
  printWin.close();
}, 100);