2012-11-08 165 views
0

我正在使用以下代碼打印div中的內容。它在IE瀏覽器中運行良好,但它在Chrome和Firefox中顯示空白屏幕。Window.Print()不適用於Chrome/Firefox

代碼:

var DocumentContainer = document.getElementById('TermsMainDiv'); 
    var WindowObject = window.open('', "PrintWindow", 
"width=800,height=700,top=200,left=200,toolbars=no,scrollbars=yes,status=no,resizable=no"); 
    WindowObject.document.writeln(DocumentContainer.innerHTML); 
    WindowObject.document.close(); 
    WindowObject.focus(); 
    WindowObject.print(); 
    WindowObject.close(); 
+0

'document.write'是邪惡的,盡你所能來阻止它。 (其實我相信你總是可以防止它) –

+0

什麼是'document.close()'? (在線5) –

+0

http://jsfiddle.net/zQxDt/ - 適合我。也許與你的HTML? –

回答

1

爲IE等瀏覽器單獨的代碼。現在工作正常。

代碼:

<script type='text/javascript'> 
var originalContents; 
    function Print() { 

     if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 
      var DocumentContainer = document.getElementById('TermsSCMainDiv'); 
      var WindowObject = window.open('', "PrintWindow", 
"width=800,height=700,top=200,left=200,toolbars=no, 
scrollbars=yes,status=no,resizable=no"); 
      WindowObject.document.writeln(DocumentContainer.innerHTML); 
      WindowObject.document.close(); 
      WindowObject.focus(); 
      WindowObject.print(); 
      WindowObject.close(); 
     } 
     else { 
      originalContents = document.body.innerHTML; 
      var printable = document.getElementById('TermsSCMainDiv'); 
      document.body.innerHTML = printable.innerHTML; 
      printCoupon(); 
     } 
    } 

    function printCoupon() { 
     window.print(); 
     endPrintCoupon(); 
    } 

    function endPrintCoupon() { 
     document.body.innerHTML = originalContents; 
     document.getElementById('TermsSCMainDiv').scrollIntoView(true); 
     location.reload(); 
    } 
</script> 
0

這似乎是工作壓力太大:

WindowObject.document.writeln(html); 
WindowObject.document.close(); 
WindowObject.scrollTo(0,0); 
WindowObject.focus(); 
WindowObject.print(); 

發現這個當我發現的是,註釋掉.PRINT()函數導致在彈出的正確渲染頁。 scrollTo觸發通常由頁面前面的打印對話框阻止的渲染。

相關問題