我在javascript中做了类似的事情,点击链接打印我页面的一部分
function printDiv() {
var divToPrint = document.getElementById('printArea');
var newWin = window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.print();
newWin.close();
}
它适用于Firefox,但不适用于IE。
有人可以帮忙吗
答案 0 :(得分:129)
在newWin.document.write(divToPrint.innerHTML)
newWin.document.close();
newWin.focus();
newWin.print();
newWin.close();
然后打印功能将在所有浏览器中运行...
答案 1 :(得分:10)
添加 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
答案 2 :(得分:8)
function printDiv() {
var divToPrint = document.getElementById('printArea');
newWin= window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.location.reload();
newWin.focus();
newWin.print();
newWin.close();
}
答案 3 :(得分:4)
之前我遇到过这个问题,解决方案就是在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();
}
答案 4 :(得分:3)
在关闭窗口前等一段时间!
if (navigator.appName != 'Microsoft Internet Explorer') {
newWin.close();
} else {
window.setTimeout(function() {newWin.close()}, 3000);
}
答案 5 :(得分:3)
为onload添加检查条件
if (newWinObj.onload) {
newWinObj.onload = function() {
newWinObj.print();
newWinObj.close();
};
}
else {
newWinObj.print();
newWinObj.close();
}
答案 6 :(得分:3)
<!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>
答案 7 :(得分:2)
我不确定,但我认为这是因为InternetExplorer的安全规则......
如果你调用像print()这样的函数,它会手动询问用户是否要允许活动脚本,如果他点击黄色栏并选择“是”,则会出现打印对话框。如果单击“否”或者不执行任何操作,则不执行被视为活动脚本或其他安全相关javascript函数的部分。
在你的例子中,窗口打开然后调用print(),弹出确认栏(没有选择,实际上由于时间短而无法选择),调用newWin.close(),窗口关闭。
您应该尝试将该页面添加到InternetExplorer中的受信任站点或更改安全设置。
可能有一种方法可以在javascript本身中处理安全策略,但我对InternetExplorer安全策略知之甚少。
希望这有帮助
答案 8 :(得分:2)
我们通常处理打印的方式是打开新窗口,其中包含需要发送到打印机的所有内容。然后我们让用户实际点击他们的浏览器打印按钮。
这在过去一直是可以接受的,它避开了Chilln所说的安全限制。
答案 9 :(得分:2)
仅当窗口不是IE时关闭窗口:
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();
}
答案 10 :(得分:2)
我被告知在document.write之后做document.close,我看不出怎么回事,但是这导致我的脚本等到我关闭打印对话框之后才运行window.close。
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();
答案 11 :(得分:2)
这适用于我,它适用于firefox,即chrome。
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();
答案 12 :(得分:2)
对于Firefox使用
iframewin.print()
用于IE使用
iframedocument.execCommand('print', false, null);
另见Unable to print an iframe on IE using JavaScript, prints parent page instead
答案 13 :(得分:2)
只是添加一些额外的信息。在IE 11中,仅使用
window.open()
原因
window.document
未定义。要解决此问题,请使用
window.open( null, '_blank' )
这也适用于Chrome,Firefox和Safari。
我没有足够的声誉来评论,所以不得不创建一个答案。
答案 14 :(得分:1)
我也面临这个问题。
IE中的问题是 newWin.document.write(divToPrint.innerHTML);
当我们在IE中删除此行打印功能正在工作。但是关于页面内容的问题仍然存在。
您可以使用window.open打开页面,并在该页面中编写内容。然后打印功能将在IE中工作。这是替代解决方案。
祝你好运。
@Pratik
答案 15 :(得分:0)
activity_main.xml