我看过这个问题: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
答案 0 :(得分:0)
您应尽可能提供完整的网址,否则会尝试使用相对网址。
var printWindow = window.open('', '', 'width=1000,height=700');
会打开一个空白网址
var printWindow = window.open('print.aspx', '', 'width=1000,height=700');
相对于当前网址打开 print.aspx 页面。因此,如果当前网址是 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将内容从一个窗口复制到另一个窗口。两者都是分开的,无法沟通。