【问题标题】:javascript: open window and printjavascript:打开窗口并打印
【发布时间】:2013-09-05 10:24:20
【问题描述】:

我看过这个问题:js window.open then print(),它工作得很好。我面临的挑战是我有很多样式想要保留在打开的打印窗口中。我试过改变

var printWindow = window.open('', '', 'width=1000,height=700');

var printWindow = window.open('print.aspx', '', 'width=1000,height=700');

然后像这样使用jQuery:

$("#print", printWindow.document).html($("#tabContainer").html());

但我打开的窗口不包含实际 print.aspx 文件中的任何内容。

谁能解释一下出了什么问题?

编辑: 这很奇怪(至少对我来说)......我的 print.aspx 有这个:

<body >
    <div id="print">print content here...</div>
</body>

并且从我的调用页面这有效(返回 1):

alert(printWindow.document.getElementsByTagName('body').length);

但是将 'body' 更改为 'div' 会使其“失败”返回 0

【问题讨论】:

  • 第二个对我来说看起来不错。当您手动浏览到 print.aspx 时会发生什么?
  • 不幸的是,服务器已关闭。当他们恢复时会更新:-/
  • 好的,我确实打开了实际的 Print.aspx,但我无法从调用页面访问 Print.aspx 页面中 id="print" 的 div 标签...
  • 如果div标签是动态添加到你原来的页面的,那么新打开的窗口就不会显示。
  • div标签不是动态添加的。它是 Print.aspx 文件的一部分。

标签: javascript jquery printing


【解决方案1】:

您应该尽可能提供完整的 url,否则它会尝试使用相对 url。

var printWindow = window.open('', '', 'width=1000,height=700'); 会打开一个空白网址

var printWindow = window.open('print.aspx', '', 'width=1000,height=700'); 打开相对于当前 url 的页面 print.aspx。因此,如果当前 url 是 www.google.com,它会打开 www.google.com/print.aspx,这将是 404 页面未找到。

小心一些会重定向你的网站,这会让你感到困惑。例如,如果你在当前的 stackoverflow 页面上运行它,它会自行打开这个页面,因为 http://stackoverflow.com/questions/18633800/xxxxxx/print.aspx 会重定向到 http://stackoverflow.com/questions/18633800/xxxxxx

jquery 也无法工作,因为您无法通过 javascript 将内容从一个窗口复制到另一个窗口。两者是分开的,不能交流。

【讨论】:

  • 不会相对于我当前的 aspx 页面而不是服务器打开 print.aspx 吗?
  • 查看我对 OP 的第二条评论
  • 是的,它会相对于 url 打开。因此,如果当前 url 是 xxxxx.aspx 您的新 url 将是 xxxxx.aspx/print.aspx
  • 尝试过 alert(printWindow.document.getElementById('print'));在 window.open 之后 - 返回 null 即使我的 print.aspx 在正文中包含
    打印内容...
  • 你是从原始窗口运行这个吗?
猜你喜欢
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多