在 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;
会怎样?在这种情况下,我们不需要设置高度和宽度。
我对@987654323@ 有同样的问题,但是如果我将高度和宽度设置为0,然后切换显示,请执行.focus()
,然后是.print()
,然后再次切换显示,它工作正常。【参考方案3】:
试试 document.parentWindow.print();而不是 self.print()...
【讨论】:
以上是关于在 IE 中打印隐藏的 iFrame的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 php、javascript 在 IE 上打印 iframe,而是打印当前页面,而不是其中有打印按钮