0

我看过这个问题:js window.open 然后 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

4

1 回答 1

0

您应该尽可能提供完整的 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 将内容从一个窗口复制到另一个窗口。两者是分开的,不能交流。

于 2013-09-05T11:06:57.583 回答