在 IE 中打印隐藏的 iFrame

Posted

技术标签:

【中文标题】在 IE 中打印隐藏的 iFrame【英文标题】:Printing a hidden iFrame in IE 【发布时间】:2010-11-18 16:39:29 【问题描述】:

此解决方案在 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 事件处理程序上的打印函数:

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

打印功能:

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

我也试过用“window”而不是“self”。这两种解决方案在 FF 中都可以正常工作,但 IE 似乎没有正确确定范围。有什么想法吗?跨浏览器的解决方案会很棒!另外,我宁愿使用 CSS 打印样式,但我打印的内容与页面上的内容不同,因此需要将 html 加载到隐藏的 iframe 中。

【问题讨论】:

是无人知晓的秘密打印机吗? (对不起,无法抗拒:)) 【参考方案1】:

父文档:

<!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

【讨论】:

欺骗并非如此 2013 你能在这里包括答案的主要思想吗?不鼓励仅链接答案。【参考方案2】:

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

【讨论】:

如果我们使用display: none; 而不是visibility: hidden; 会怎样?在这种情况下,我们不需要设置高度和宽度。 我对@9​​87654323@ 有同样的问题,但是如果我将高度和宽度设置为0,然后切换显示,请执行.focus(),然后是.print(),然后再次切换显示,它工作正常。【参考方案3】:

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

【讨论】:

以上是关于在 IE 中打印隐藏的 iFrame的主要内容,如果未能解决你的问题,请参考以下文章

在 IE 中打印时 iframe 在底部切割

无法使用 php、javascript 在 IE 上打印 iframe,而是打印当前页面,而不是其中有打印按钮

如何打印隐藏 iframe 的内容?

IE 11 和 FF 38 从 iFrame 发出超过 1 页的打印

无法从 IE 11 中的父页面打印 iframe 内容

Chrome 65 无法打印隐藏的 iframe