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

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

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

它在Firefox中很好用,但不在IE中。

有人可以帮忙

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

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

然后打印function将在所有浏览器中工作…

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

添加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

我不确定,但我认为这是因为InternetExplorer的安全规则

如果您调用print()函数,则会手动询问用户是否要允许活动脚本,如果他单击黄色栏并select“是”,则会出现打印对话框。 如果您点击“否”或者只是不做任何事情,它不会执行被视为活动脚本或其他安全相关的JavaScriptfunction的部分。

在你的例子中,打开窗口然后调用print(),popup确认栏(没有select任何东西,实际上由于时间太短没有select),调用newWin.close(),窗口closures。

您应该尝试将该页面添加到InternetExplorer中的受信任的站点或更改安全设置。

可能有一种方法来处理JavaScript本身的安全政策,但我不太了解InternetExplorer安全策略。

希望这可以帮助

我以前有过这个问题,解决方法只是在IE中调用window.print(),而不是从窗口实例调用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(); } 

等一会儿才关窗户!

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

我被告知在document.write之后做document.close,我没有看到如何或为什么,但是这导致我的脚本等待,直到我运行我的window.close之前closures了打印对话框。

 var printContent = document.getElementbyId('wrapper').innerHTML; var disp_setting="toolbar=no,location=no,directories=no,menubar=no, scrollbars=no,width=600, height=825, left=100, top=25" var printWindow = window.open("","",disp_setting); printWindow.document.write(printContent); printWindow.document.close(); printWindow.focus(); printWindow.print(); printWindow.close(); 

为onload添加检查条件

 if (newWinObj.onload) { newWinObj.onload = function() { newWinObj.print(); newWinObj.close(); }; } else { newWinObj.print(); newWinObj.close(); } 

我们通常处理打印的方式是打开新窗口,其中包含需要发送到打印机的所有内容。 然后我们有用户实际上点击他们的浏览器打印button。

这在过去一直是可以接受的,它回避了奇恩谈论的安全限制。

只有在不是IE的情况下closures窗口:

 function printDiv() { var divToPrint = document.getElementById('printArea'); var newWin= window.open(); newWin.document.write(divToPrint.innerHTML); newWin.print(); if (navigator.appName != 'Microsoft Internet Explorer') newWin.window.close(); } 

我也面临这个问题。

在IE中的问题是newWin.document.write(divToPrint.innerHTML);

当我们删除这行在IE中的打印function正在工作。 但页面的内容仍然存在问题。

您可以使用window.open打开页面,并在该页面中写入内容。 那么打印function将在IE中工作。这是替代解决scheme。

祝你好运。

@Pratik

这工作对我来说,它在Firefox中,即铬和铬。

  var content = "This is a test Message"; var contentHtml = [ '<div><b>', 'TestReport', '<button style="float:right; margin-right:10px;"', 'id="printButton" onclick="printDocument()">Print</button></div>', content ].join(''); var printWindow = window.open(); printWindow.document.write('<!DOCTYPE HTML><html><head<title>Reports</title>', '<script>function printDocument() {', 'window.focus();', 'window.print();', 'window.close();', '}', '</script>'); printWindow.document.write("stylesheet link here"); printWindow.document.write('</head><body>'); printWindow.document.write(contentHtml); printWindow.document.write('</body>'); printWindow.document.write('</html>'); printWindow.document.close(); 

为Firefox使用

 iframewin.print() 

为IE使用

 iframedocument.execCommand('print', false, null); 

另请参阅无法使用JavaScript在IE上打印iframe,而是打印父页面

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

只是添加一些额外的信息。 在IE 11中,仅仅使用

 window.open() 

原因

 window.document 

未定义。 要解决这个问题,请使用

 window.open( null, '_blank' ) 

这也将在Chrome,Firefox和Safari中正常运行。

我没有足够的评价声誉,所以不得不创造一个答案。

 <!DOCTYPE html> <html> <head id="head"> <meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" /> <!-- saved from url=(0023)http://www.contoso.com/ --> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <div> <div> Do not print </div> <div id="printable" style="background-color: pink"> Print this div </div> <button onClick="printdiv();">Print Div</button> </div> </body> <script> function printdiv() { var printContents = document.getElementById("printable").innerHTML; var head = document.getElementById("head").innerHTML; //var popupWin = window.open('', '_blank'); var popupWin = window.open('print.html', 'blank'); popupWin.document.open(); popupWin.document.write(''+ '<html>'+'<head>'+head+'</head>'+'<body onload="window.print()">' + '<div id="printable">' + printContents + '</div>'+'</body>'+'</html>'); popupWin.document.close(); return false; }; </script> </html>