2011-04-06 44 views
2

我試圖創建一個javascript函數,其中在啓動window.print之前切換內容,然後在頁面發送到打印機後切換內容。我曾嘗試使用document.body.onfocus,但是在實際打印頁面之前,某些打印方法(如打印到PDF)會將焦點返回到body,從而用原始內容替換預期內容。有沒有一種方法可以偵聽使用JavaScript發送到打印機的頁面?

這裏是我的那一刻,並在監聽我想我會需要將適合於:

function printNewContent() { 
      var title = document.getElementById("OriginalTitle"); 
      var secondtext = document.getElementById("TextBlock2"); 
      var copy = document.getElementById("StandardCopy"); 
      var origtitle = title.innerHTML; 
      var origcopy = copy.innerHTML; 
      var newcopy = document.getElementById("NewCopy").innerHTML; 

      title.innerHTML = "New Title"; 
      copy.innerHTML = newcopy; 
      secondtext.className = "displayNone"; 
      window.print(); 

      //Listen for page to be sent to the printer 

      title.innerHTML = origtitle; 
      copy.innerHTML = origcopy; 
      secondtext.className = "PrintOnly SecondTxt"; 
     } 

我會用延遲與onfocus方法相結合,但是這不是一個簡單的方法,我正在尋找儘可能穩定和一致的東西。任何建議將不勝感激。謝謝!

回答

3

另一種方法是使用一個CSS media query來在網站上顯示/隱藏的內容時,它的存在打印。這比在打印之前試圖操縱DOM並嘗試將其改回來要好得多。

例如,假設您希望您的網頁在屏幕上查看時顯示一個元素,但是打印時您希望隱藏該元素並顯示其他內容。您需要提前爲屏幕版和印刷版提供HTML。

標記:

<div class="screen"> 
    This is the stuff normal users will see. 
</div> 
<div class="print"> 
    This is the stuff that will be printed. 
</div> 

CSS:

.print { display: none; } 
@media print 
{ 
    .print { display: block; } 
    .screen { display: none; } 
} 
1

IE已經onafterprint從早期的天。
使用HTML5,onafterprint也成爲非IE瀏覽器的事件。
請參閱MDCW3C Specification關於onafterprint的詳細信息

相關問題