2012-02-01 251 views
1

我在一個頁面上使用了經典asp,我使用window.print()方法打印頁面。我正在使用的腳本顯示打印對話框,並將在IE中打印罰款,但與FF它只是打印一個空白頁Windows.print顯示打印對話框但在火狐中打印空白頁面

如果我使用控制+ p在fire狐狸打印頁面,然後頁打印沒有問題所以它不是一個渲染問題

這裏是我使用的腳本:

function printform(url) { 

    var windowReference = window.open(url, "Header", 'width=600,height=600,toolbar=no,resizable=yes,scrollbars=yes,menubar=no'); 
    if (window.print) 
     windowReference.print() 
} 

在此先感謝。

這是一個變通,我想出了感謝Prusse

功能printform(URL){

var windowReference = window.open(url, "Header", 'width=600,height=600,toolbar=no,resizable=yes,scrollbars=yes,menubar=no'); 
if (window.print) 
    if (navigator.appName == "Netscape") { 

    windowReference.onload = function(){ windowReference.print(); } 
} 
else { 
    windowReference.print() 
} 

}

+1

我的猜測是當你調用'windowReference.print()'頁面尚未加載。嘗試'windowReference.onload = function(){windowReference.print(); };'。 – Prusse 2012-02-01 13:09:28

+0

這適用於火狐,但現在在IE中,對話框甚至沒有出現... – jgok222 2012-02-01 13:20:08

回答

4

它停止工作,因爲IE瀏覽器已加載該文件,並已開啓了onload事件。您可以檢查文檔是否已經加載,並簡單地調用print,如果它不是,並且事件處理程序。

function printform(url) { 
    var windowReference = window.open(url, "Header", 'width=600,height=600,toolbar=no,resizable=yes,scrollbars=yes,menubar=no'); 
    //if (window.print) 
    // windowReference.print(); 
    if (windowReference.print){ 
     var done = false; 
     if (windowReference.document && windowReference.document.readyState){ 
      var rs = windowReference.document.readyState; 
      if ((rs === 'complete') || (rs === 'loaded')){ 
       done = true; 
       windowReference.print(); 
      } 
     } 
     if (!done){ 
      if (windowReference.addEventListener){ 
       windowReference.addEventListener('load', function(){ this.print(); }); 
      } else{ 
       windowReference.onload = function(){ this.print(); }; 
      } 
     } 
    } 
} 
+0

我決定只測試用戶是否使用了火狐瀏覽器,這裏是我使用的代碼:'function printform(url){ var windowReference = window.open(url,「Header」,'width = 600,height = 600,toolbar = no,resizable = yes,scrollbars = yes,menubar = no'); if(window.print)if(navigator.appName ==「Netscape」){windowReference.onload = function(){windowReference.print(); }} else {windowReference.print()}}' – jgok222 2012-02-01 14:19:13

相關問題