2011-04-27 70 views
2

我试图通过将打印样式表应用于屏幕样式表,在打印对话框之前显示打印样式页面的预览。如何在打印对话框之前预览样式?

这不起作用:

$('link[media*="screen"]').attr("href",url+"css/print/default.css"); 
window.print(); 

但随着打印(),它的工作之前,警报():

$('link[media*="screen"]').attr("href",url+"css/print/default.css"); 
alert("Ok?"); 
window.print(); 

任何提示?

回答

2

此功能延迟window.print执行几秒钟(delay参数,默认为5秒):

function doPrint(delay){ 
delay = delay || 5; //default to 5 seconds 
$('link[media*="screen"]').attr("href",url+"css/print/default.css"); 
setTimeout(function(){window.print();},delay*1000); 
} 

您还可以通过外放$('link[media*="screen"]').attr("href",url+"css/print/default.css");反向插入功能恢复打印对话框后,原来的CSS从setTimeout调用。

+0

谢谢,我已经考虑过这个选项:它的工作原理,但我必须选择延迟任意,使得这不是一个优雅的解决方案。 – kvwyns 2011-04-27 11:51:29

+0

@kvwyns好吧,但是,我必须选择延迟任意*意味着......? – KooiInc 2011-04-27 11:56:28

+0

我的意思是我不能确定500毫秒的延迟总是会起作用,所以我必须做出有根据的猜测。 感谢第二个提示(恢复css):我忽略了这种明显的可能性。 – kvwyns 2011-04-28 08:57:10

0

直到您想要显示打印对话框时才调用window.print()。将另一个按钮添加到用户可以按下以打开打印对话框的页面(默认情况下隐藏该按钮,显示预览时显示,但不要忘记在打印时再次隐藏!)。

0

加载样式表需要时间。如果没有提示,在调用样式表足够的时间之前,您需要调用print

任何提示?

浏览器内置打印和打印预览功能。避免车轮重塑。

+0

当然,但据我所知,浏览器打印_preview_不能从JavaScript调用?我最喜欢的浏览器(chrome)现在根本不给我(12.0 dev)。 我们确实需要预览:样式表变化更多,然后用户可能会怀疑。 – kvwyns 2011-04-27 12:12:57

+0

Chrome 12/Mac有打印预览(像往常一样在打印对话框中) – Quentin 2011-04-27 12:14:03