有人可以帮助我通过 Safari/Chrome 中的 javascript 调用打印 IFrame 的内容。
这适用于Firefox:
$('#' + id)[0].focus();
$('#' + id)[0].contentWindow.print();
这在 IE 中有效:
window.frames[id].focus();
window.frames[id].print();
但我无法在 Safari/Chrome 中使用任何东西。
谢谢
安德鲁
有人可以帮助我通过 Safari/Chrome 中的 javascript 调用打印 IFrame 的内容。
这适用于Firefox:
$('#' + id)[0].focus();
$('#' + id)[0].contentWindow.print();
这在 IE 中有效:
window.frames[id].focus();
window.frames[id].print();
但我无法在 Safari/Chrome 中使用任何东西。
谢谢
安德鲁
这是我完整的跨浏览器解决方案:
在 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 版本中遇到了这个问题。我现在没有时间重新调查这个问题,但是,如果你被卡住了,我建议你阅读整个线程中的所有评论!
在 iframe 中放置一个打印函数并从父级调用它。
框架:
function printMe() {
window.print()
}
家长:
document.frame1.printMe()
我使用了 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
除了 Andrew 和 Max 的解决方案之外,在 IE8 中使用 iframe.focus() 会导致打印父框架而不是仅打印子 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;
}
使用 firefoxwindow.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>
需要注意的一点是,如果您在本地使用 file:/// 进行测试,它将无法在 chrome 上运行,因为 iframe 中的函数将显示为未定义。但是,一旦在 Web 服务器上,它就会工作。
我必须做一些修改才能在 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>
您可以使用
parent.frames['id'].print();
在 Chrome 工作!
你也可以使用
top.iframeName.print();
或者
parent.iframeName.print();
'framePartsList.contentWindow.print();' 在 IE 11 版本 11.0.43 中不起作用
因此我使用了 framePartsList.contentWindow.document.execCommand('print', false, null);
用这个:
window.onload = setTimeout("window.print()", 1000);