【问题标题】:How to print a web page without opening a popup window?如何在不打开弹出窗口的情况下打印网页?
【发布时间】:2010-04-16 08:22:36
【问题描述】:

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

【问题讨论】:

  • 在你的网页中调用window.print有什么问题?
  • Alsciende,调用这个没有问题,但是在调用这个之前我必须打开一个我不想打开的窗口。这是场景:我有一个 page1.aspx 页面,现在我生成了一些输出,现在在 page2.aspx 中,如何在不打开相同的情况下打印 page2.aspx?
  • Gaurav 调用 window.print(),正如 Rosdi 首先建议的那样,将不会打开一个弹出窗口。它将打开一个打印选项对话框,这不是一个弹出窗口,也不是您可以阻止的。此窗口是必需的,因此用户可以选择要打印到的打印机、纸张尺寸等。
  • 对不起哥们,我觉得我的话有些模棱两可,这是我想尝试的: [code] 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(); [/code]
  • Gaurav,你可以编辑你原来的问题,粘贴到那里。

标签: asp.net javascript


【解决方案1】:

最简单的解决方案是将 mypage.aspx 的内容加载到 iframe,然后在 iframe 的 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>

【讨论】:

  • 你也帮我解决了这个问题,感谢代码sn-p!
  • 应该可以了,请看错误控制台,可能有js错误,请检查。
【解决方案2】:
<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 在底部,它应该可以工作。

【讨论】:

  • 我已经做了一切,请先解决我的问题和评论,然后提出一些解决方案。
  • Gaurav,您正在从志愿者社区获得免费帮助。责骂他们不喜欢的答案并不是鼓励他们花时间帮助你的好方法......
  • @Gaurav,我重写了答案以包含完整的工作 html 示例,希望对您有所帮助。
  • 大家好,我真的很抱歉,如果你觉得我的话很苛刻,我不想强​​迫任何人回答。我只是在寻找解决方案。
  • 我认为 Gaurav 想要的是页面无需用户交互就能自动打印?然后在正文 onLoad 中调用 window.print()。
【解决方案3】:

不确定它是否有效,但您可以尝试创建不可见的iframe,在其中加载 page2.aspx 然后打印。

【讨论】:

    【解决方案4】:

    嗯。只需在页面上直接使用window.print();。它本身不会打开一个新窗口(除了打印属性窗口来设置打印选项)。

    【讨论】:

      【解决方案5】:

      您可以只使用 CSS 打印样式表而完全避免使用 javascript - 用户所要做的就是打印页面。例如

      <link rel="stylesheet" type="text/css" media="print" href="print.css" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-26
        相关资源
        最近更新 更多