有人可以通过Safari / Chrome中的javascript调用帮助我打印IFrame的内容。
这适用于firefox:
$('#' + id)[0].focus();
$('#' + id)[0].contentWindow.print();
这适用于IE:
window.frames[id].focus();
window.frames[id].print();
但我无法在Safari / Chrome中使用任何内容。
由于
安德鲁
答案 0 :(得分:48)
这是我完整的跨浏览器解决方案:
iframe页面中的:
function printPage() { print(); }
在主页
中function printIframe(id)
{
var iframe = document.frames ? document.frames[id] : document.getElementById(id);
var ifWin = iframe.contentWindow || iframe;
iframe.focus();
ifWin.printPage();
return false;
}
更新:自从我遇到此问题以来,许多人似乎在发布的IE版本中遇到了问题。我现在没有时间重新调查,如果你卡住我建议你阅读这整个帖子中的所有评论!
答案 1 :(得分:42)
在iframe中放置一个打印功能,并从父级调用它。
IFRAME:
function printMe() {
window.print()
}
父:
document.frame1.printMe()
答案 2 :(得分:32)
我使用了Andrew的脚本,但在调用printPage()函数之前添加了一个部分。 iframe需要焦点,否则它仍将在IE中打印父帧。
function printIframe(id)
{
var iframe = document.frames ? document.frames[id] : document.getElementById(id);
var ifWin = iframe.contentWindow || iframe;
iframe.focus();
ifWin.printPage();
return false;
}
不过,不要感谢我,是安德鲁写的。我刚做了一个调整 = P
答案 3 :(得分:8)
除了Andrew和Max的解决方案之外,使用iframe.focus()导致打印父框架而不是在IE8中仅打印子iframe。更改该行修正了它:
function printIframe(id)
{
var iframe = document.frames ? document.frames[id] : document.getElementById(id);
var ifWin = iframe.contentWindow || iframe;
ifWin.focus();
ifWin.printPage();
return false;
}
答案 4 :(得分:4)
使用firefox window.frames
但也添加name
属性,因为它在firefox中使用iframe
IE:
window.frames[id]
火狐:
window.frames[name]
<img src="print.gif" onClick="javascript: window.frames['factura'].focus(); parent['factura'].print();">
<iframe src="factura.html" width="100%" height="400" id="factura" name="factura"></iframe>
答案 5 :(得分:3)
有一点需要注意的是,如果您使用file:///在本地测试它,它将无法在chrome上工作,因为iframe中的函数将显示为undefined。但是,一旦在Web服务器上,它就可以工作。
答案 6 :(得分:3)
我必须进行一些修改才能在IE8中进行修改(没有使用其他IE风格进行测试)
1)document.frames [param]似乎接受一个数字,而不是ID
printIframe(0, 'print');
function printIframe(num, id)
{
var iframe = document.frames ? document.frames[num] : document.getElementById(id);
var ifWin = iframe.contentWindow || iframe;
ifWin.focus();
ifWin.printPage();
return false;
}
2)我在页面加载时显示了一个打印对话框,并且还有一个“单击此处开始打印”的链接(如果它没有自动启动)。为了使它工作,我不得不添加focus()调用
<script type="text/javascript">
$(function(){
printPage();
});
function printPage()
{
focus();
print();
}
</script>
答案 7 :(得分:0)
您可以使用
parent.frames['id'].print();
在Chrome上工作!
答案 8 :(得分:0)
您也可以使用
top.iframeName.print();
或
parent.iframeName.print();
答案 9 :(得分:0)
'framePartsList.contentWindow.print();'在IE 11 ver11.0.43
中无效因此我使用过 framePartsList.contentWindow.document.execCommand('print',false,null);
答案 10 :(得分:-4)
使用此:
window.onload = setTimeout("window.print()", 1000);