此解决方案在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中。
答案 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()...