window.print() 在 IE 中不起作用

IT技术 javascript internet-explorer printing
2021-01-22 19:50:16

我正在 javascript 中做这样的事情来打印我页面的一部分点击链接

function printDiv() {
 var divToPrint = document.getElementById('printArea');
 var newWin = window.open();
 newWin.document.write(divToPrint.innerHTML);
 newWin.print();
 newWin.close();
}

它在 Firefox 中运行良好,但在 IE 中不起作用。

有人可以帮忙吗

6个回答

在后面添加这些行 newWin.document.write(divToPrint.innerHTML)

newWin.document.close();
newWin.focus();
newWin.print();
newWin.close();

然后打印功能将在所有浏览器中工作......

非常感谢。缺少 document.close() 是原因;
2021-03-14 19:50:16
这对我有用,谢谢。记得使用第一行,window.document.close(); 否则它确实有效,对我来说我的意思是......
2021-03-16 19:50:16
@Pratik 嗨,感谢您的解决方案。我有同样的问题,但我没有打开一个新窗口来打印。我如何使用 close()?请你帮助我好吗?我确实为此提出了一个问题stackoverflow.com/questions/49410902 谢谢
2021-03-24 19:50:16
效果很好,Chrome 将此方法识别为弹出窗口并默认阻止它
2021-04-03 19:50:16
在 Chrome 61 中,浏览器会立即关闭打印窗口。删除该行后,newWin.close()它在 chrome 中运行良好......现在用户必须手动关闭窗口
2021-04-11 19:50:16

添加newWin.document.close(); ,像这样:

function printDiv() {
   var divToPrint = document.getElementById('printArea');
   var newWin = window.open();
   newWin.document.write(divToPrint.innerHTML);
   newWin.document.close();
   newWin.print();
   newWin.close();
}

这让 IE 高兴。HTH, -Ted

function printDiv() {
    var divToPrint = document.getElementById('printArea');
    newWin= window.open();
    newWin.document.write(divToPrint.innerHTML);
    newWin.location.reload();
    newWin.focus();
    newWin.print();
    newWin.close();
}

我以前也遇到过这个问题,解决办法就是在IE中调用window.print(),而不是从window实例调用print:

function printPage(htmlPage)
    {
        var w = window.open("about:blank");
        w.document.write(htmlPage);
        if (navigator.appName == 'Microsoft Internet Explorer') window.print();
        else w.print();
    }
你一年前的这个回复对我很有帮助。我已张贴这一解决方案WRT我自己Qs的:stackoverflow.com/questions/13948313/how-to-print-a-pdf/...向上投票。
2021-04-10 19:50:16

在关闭窗口之前等待一段时间!

if (navigator.appName != 'Microsoft Internet Explorer') {
    newWin.close();
} else {
    window.setTimeout(function() {newWin.close()}, 3000);
}