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>