在IE中打印隐藏的iFrame

时间:2009-08-11 16:42:43

标签: javascript internet-explorer iframe printing cross-browser

此解决方案在Firefox 3.0+中运行良好,但IE8 / 7只是打印整个页面,而不是特定的iframe。

这是单击打印链接时调用的函数:

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事件处理程序上的print函数:

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

打印功能:

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

我也尝试用“窗口”代替“自我”。两种解决方案在FF中运行良好,但IE似乎没有得到正确的范围。有什么想法吗?跨浏览器解决方案会很棒!另外,我宁愿使用CSS打印样式,但我打印的内容与页面上的内容不同,因此需要将html加载到隐藏的iframe中。

3 个答案:

答案 0 :(得分:20)

解决方案:在IE中,iframe具有可见性:隐藏;导致浏览器打印父级。将样式更改为高度:0px;宽度:0px;解决了这个问题。

答案 1 :(得分: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

答案 2 :(得分:0)

尝试document.parentWindow.print();而不是self.print()...