我的网站有一个“打印此页”按钮。
我将静态打印模板 HTML 文件加载到隐藏的 iframe 中,使用 jQuery 将 HTML 复制到该页面,然后从 Iframe 页面调用 window.print()
。一切都很好,但在 Safari 上除外,它也想打印父框架,所以我打开了两个打印对话框。
我试过从 iframe 中调用 window.print,并从父级调用它,以 iframe 为目标 (document.printFrame.window.print()
) 但无论如何我都会得到两个对话框.
有人知道解决这个问题的方法吗?我只想打印 Iframe,而不是父级。
最佳答案
试试这个。把它放在所说的 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;
}
如果这也不起作用,我会尝试打开一个新窗口/标签,并用可打印的 HTML 填充它。
var printwin = window.open("about:blank", "_new");
printwin.document.open();
printwin.document.write("HTML goes here..javascript which is going to print is in there too..");
printwin.document.close();
需要注意的两件小事是
- 拆分
</script>
在新窗口中,这样您就不会过早终止 - 在 onLoad() 完成后使用 setTimeout() 执行,否则 Firefox 用户可能会在打印对话框下方看到空白页
关于javascript - Safari:打印 Iframe 时防止出现两个打印对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3258450/