友好的版本不起作用
遇到一个有趣的浏览器问题 - 我已经实现了jQuery来切换页面的样式表链接href,点击按钮,在普通视图css文件和易于打印的css文件之间。 它的工作原理除了当查看者转到易于打印的版本时,我在应用新链接href后调用window.print()。 打印预览会自动出现,并且在预览中,某些应该显示的元素:无可见的打印版本。 如果点击“打印”,则打印出来就像预览一样。 如果取消打印,那么屏幕上的页面仍然处于易于打印的模式,但一切都很好,没有什么不可见的。 如果您然后右键单击并选择“打印...”,则预览显示应该显示,并且所有内容都按照它应该打印的方式显示。
这必须是浏览器的事情,因为它只发生在Chrome中,而不是FF中。
这是在按钮被点击时被调用的函数:
$('#printOnlyBtn').click(function(){
if ($('#mainStylesheetLink').attr('href') == 'normal.css' {
//switch to print-friendly css file and print
doPrint();
}
else {
//switch back to normal css file
$('#mainStylesheetLink').attr('href', 'normal.css');
}
});
function doPrint(){
$('#mainStylesheetLink').attr('href', 'printFriendly.css');
window.print();
}
一种解决方法是将调用去掉window.print(); 只需使用一个按钮将页面置于易于打印的模式,然后再次点击另一个按钮即可实际打印页面。 但是如果可能的话,我宁愿保持一键式过程。
我建议放弃你的方式链接到一个CSS文件。 相反,尝试在你的css中使用@media print { ... }
声明。 在此块中包含您的打印特定样式。 在https://developer.mozilla.org/en-US/docs/Web/CSS/@media上有很棒的文档。
我只是使用setTimeout()来解决问题。 我觉得有一个竞争条件或类似的东西,所以我只是延迟了100毫秒的window.print()的调用:
function doPrint(){
$('##mainStylesheetLink').attr('href', '#printFriendly.css');
setTimeout(window.print, 100);
}
我之前曾尝试过,但是我将它编码为如下,忘记延迟后执行的代码需要作为不带parens的回调函数传递给setTimeout(),否则会立即调用它:
setTimeout(window.print(), 100);
链接地址: http://www.djcxy.com/p/82589.html