在IE

2009-08-11 21 views
8

打印隱藏iFrame該解決方案可以在Firefox 3.0+罰款,但IE8/7只打印整個頁面,而不是具體的iframe中。在IE

這是函數點擊了打印鏈接時調用:

var printfunc= function(){ 
    var url = http://someurl.aspx; 
    //This iFrame has style="visibility: hidden; position: absolute; left: -9000px;" 
    var printIFrame = GetObj('PrintIFrame'); 
    printIFrame.src = url; 
} 

是被加載到隱藏的iframe的ASPX呼籲onload事件處理程序的打印功能:

<body onload="PrintJS.Print();"> 

打印功能:

this.Print = function(){ 
     self.focus(); 
     self.print(); 
     return false; 
} 

我也試過用「窗口」而不是「自我」。這兩種解決方案都可以在FF中正常工作,但IE似乎沒有正確確定範圍。有什麼想法嗎?跨瀏覽器的解決方案將非常棒!另外,我寧願使用CSS打印樣式,但打印的內容與頁面上的內容不同,因此需要將html加載到隱藏的iframe中。

+1

對於沒有人知道的祕密打印機嗎? (對不起,忍不住:)) – KristoferA 2009-08-11 16:50:00

回答

20

解決方案:在IE中,一個具有可見性的iframe:隱藏;導致瀏覽器打印父級。將樣式更改爲height:0px; width:0px;修復了這個問題。

+0

如果我們將使用'display:none;'而不是'visibility:hidden;'?在這種情況下,我們不需要設置高度和寬度。 – Debiprasad 2013-07-10 15:25:03

+0

我對'display:none;'有同樣的問題,但是如果我將高度和寬度設置爲0,然後切換顯示,請執行'.focus()'後面跟着'.print()',然後切換再次顯示,它工作正常。 – gattsbr 2014-01-22 19:59:32

0

嘗試document.parentWindow.print();代替self.print()...

2

父文檔:

<!doctype html> 
<html> 
    <head> 
     <script> 
     function printIframe(iframe_id) { 

      if (navigator.appName.toUpperCase() == 'MICROSOFT INTERNET EXPLORER') { 
       document.frames[iframe_id].focus(); 
       document.frames[iframe_id].print(); 
      } else { 
       window.frames[iframe_id].focus(); 
       window.frames[iframe_id].print(); 
      } 
     } 
     </script> 
    </head> 
    <body> 
     <a href="javascript:printIframe('printMe');">Print the iframe.</a> 
     <iframe id="printMe" src="iframe.html"></iframe> 
    </body> 
</html> 

IFRAME文件:

<!doctype html> 
<html> 
    <head></head> 
    <body> 
     <p>Print this.</p> 
    </body> 
</html> 

從下面的鏈接:http://www.eggheadcafe.com/PrintSearchContent.asp?LINKID=449

+0

這對我有效!謝謝。 – Pons 2011-12-15 10:07:34

+0

欺騙並非如此2013 – Codebeat 2013-11-03 23:01:36

+0

你能在這裏列出答案的主要觀點嗎?只有鏈接的答案是不鼓勵的。 – Thomas 2014-05-01 08:37:53