Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在IE中打印隐藏的iFrame_Javascript_Internet Explorer_Iframe_Printing_Cross Browser - Fatal编程技术网

Javascript 在IE中打印隐藏的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

该解决方案在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();">

我也试过用“窗口”代替“自我”。这两种解决方案在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>