Javascript 在IE中打印隐藏的iFrame
该解决方案在Firefox 3.0+中运行良好,但IE8/7只是打印整个页面,而不是特定的iframe 这是单击打印链接时调用的函数:Javascript 在IE中打印隐藏的iFrame,javascript,internet-explorer,iframe,printing,cross-browser,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
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();">
我也试过用“窗口”代替“自我”。这两种解决方案在FF中都能很好地工作,但IE似乎没有正确地确定范围。有什么想法吗?跨浏览器解决方案将是伟大的!此外,我更愿意使用CSS打印样式,但我打印的内容与页面上的内容不同,因此需要将html加载到隐藏的iframe中 尝试document.parentWindow.print();而不是self.print()…父文档:
<!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>
函数printIframe(iframe_id){
如果(navigator.appName.toUpperCase()=“MICROSOFT INTERNET EXPLORER”){
document.frames[iframe_id].focus();
document.frames[iframe_id].print();
}否则{
frames[iframe_id].focus();
frames[iframe_id].print();
}
}
iframe文件:
<!doctype html>
<html>
<head></head>
<body>
<p>Print this.</p>
</body>
</html>
打印这个
从下面的链接:解决方案:在IE中,具有可见性的iframe:隐藏;使浏览器打印父对象。将样式更改为高度:0px;宽度:0px;修复此问题 是给一个没人知道的秘密打印机吗?(抱歉,无法抗拒:))如果我们将使用
display:none代码>而不是可见性:隐藏代码>?在这种情况下,我们不需要设置高度和宽度代码>但是,如果我将高度和宽度设置为0,然后切换显示,执行.focus()
,然后执行.print()
,然后再次切换显示,效果很好。欺骗不是这样的2013你能在这里包括答案的主要思想吗?不鼓励仅链接的答案。
<!doctype html>
<html>
<head></head>
<body>
<p>Print this.</p>
</body>
</html>