2009-02-11 53 views
8

我想在打印時改變樣式:用於打印的Javascript事件處理程序

JavaScript中是否存在可以偵聽文件>> print被調用的事件?它是什麼?另外 - 打印完成後是否有處理程序?它是什麼?

或者如果有更好的方法來做到這一點與其他方式,如樣式表,你如何做到這一點?

回答

7

不同的樣式表

您可以指定印刷不同的樣式表。

<link rel="stylesheet" type="text/css" media="print" href="print.css" /> 
<link rel="stylesheet" type="text/css" media="screen" href="main.css" /> 

一個樣式表

正如kodecraft提到的,你也可以把樣式合併到同一個文件中使用@media塊。

@media print { 
    div.box { 
     width:100px; 
    } 
} 

@media screen { 
    div.box { 
     width:400px; 
    } 
} 
0

IE已經onbeforeprint和onafterprint

3

在IE中有非標準window.onBeforePrint()和window.onAfterPrint()事件偵聽器。然而,我沒有一種非IE的方式來做到這一點。

你想做什麼樣的變化?有可能您的問題可以通過爲您的打印樣式表指定不同的規則來解決。

+0

對於打印出來也許不錯將附加內容添加到DOM。這可以通過print.css完成,默認隱藏其他元素,啓用它們。儘管如此,我更喜歡javascript方法。 你知道其他瀏覽器的解決方案嗎? – Hendrik 2012-03-19 23:13:35

2

我們還發現,你可以做一個只打印的樣式有以下:

<style type="text/css"> 
@media print { 
    div 
    { 
     overflow:visible; 
    }  
} 
</style>