我想使用JavaScript打印网页。但我不想打开页面作为弹出窗口。如何使用JavaScript window.print方法直接打印像'mypage.aspx'这样的网页而不将其打开为弹出窗口?
条件是'我不想为此使用任何ActiveX'
以下是我想尝试的内容:
var printWindow, printData; printWindow = window.open("", "printVersion", "menubar,scrollbars,width=640,height=480,top=0,left=0");
printData=document.getElementById("lblReport").innerHTML; printWindow.document.write(printData);
printWindow.document.close();
printWindow.print();
答案 0 :(得分:22)
最简单的解决方案是将mypage.aspx的内容加载到iframe,然后在iframes onload事件上调用window.print。
<button onclick="printPage()">print</button>
<div id="printerDiv" style="display:none"></div>
<script>
function printPage()
{
var div = document.getElementById("printerDiv");
div.innerHTML = '<iframe src="mypage.aspx" onload="this.contentWindow.print();"></iframe>';
}
</script>
答案 1 :(得分:6)
<html>
<head>
<title>Print</title>
<link rel="stylesheet" type="text/css" media="all" href="all.css" />
<link rel="stylesheet" type="text/css" media="print" href="print.css" />
</head>
<body>
<p>I get printed</p>
<form>
<input type="button" onclick="window.print()" value="Print" />
</form>
</body>
</html>
确保all.css
位于顶部,print.css
位于底部,它应该有效。
答案 2 :(得分:2)
不确定它是否有效,但您可能会尝试创建不可见的iframe
,在其中加载page2.aspx然后将其打印出来。
答案 3 :(得分:1)
庵。只需在页面上直接使用window.print();
即可。它本身不会打开一个新窗口(除了打印属性窗口以设置打印选项)。
答案 4 :(得分:0)
您可以使用CSS打印样式表并避免完全使用javascript - 用户必须执行这些操作才能打印页面。 e.g。
<link rel="stylesheet" type="text/css" media="print" href="print.css" />