2011-04-27 68 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