2011-10-04 58 views

回答

9

你不能,除了IE瀏覽器。沒有其他瀏覽器有打印前事件。你可以,但是,針對特定的樣式表只適用,同時打印:

<!-- In head --> 
<link rel="stylesheet" type="text/css" media="print" href="print.css" /> 

這個樣式表將在打印之前應用。這使您可以執行一些驚人的更改,包括隱藏主要部分,移動項目以及執行打印只樣式(如分頁符)。

另一種選擇是向用戶提供「打印此頁」按鈕。該按鈕可以處理你的JavaScript,請致電window.print(),然後恢復更改:

function printMe() { 
    // perform changes 
    window.print(); 
    // revert changes 
} 

window.print()方法總是塊(在每一個瀏覽器我測試過),所以它的安全,隨即恢復了變化。但是,如果用戶選擇通過菜單或工具欄進行打印,那麼您運氣不好。

我在一個複雜的網絡應用程序中處理這種情況的一種方式是打印樣式表隱藏除了特殊DIV以外的所有內容。如果用戶點擊打印,他們會收到警告消息。如果他們點擊打印按鈕,那麼該div將填充正確的信息。這不是很好,但至少他們沒有得到幾頁垃圾。