如何在不打开弹出窗口的情况下打印网页?

时间:2010-04-16 08:22:36

标签: asp.net javascript

我想使用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();  

5 个答案:

答案 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" />