【问题标题】:Safari: Prevent two print dialogs when printing an IframeSafari:打印 Iframe 时防止出现两个打印对话框
【发布时间】:2011-03-16 13:35:03
【问题描述】:
我的网站有一个“打印此页面”按钮。
我将静态打印模板 HTML 文件加载到隐藏的 iframe 中,使用 jQuery 将 HTML 复制到该页面中,然后从 iframe 页面调用window.print()。一切都很好,除了 Safari,它也想打印父框架,所以我打开了两个打印对话框。
我尝试从 iframe 中调用 window.print,并从父级调用它,以 iframe (document.printFrame.window.print()) 为目标,但无论如何我都会得到两个对话框。
有人知道解决这个问题的方法吗?我只想打印 Iframe,而不是父级。
【问题讨论】:
标签:
javascript
html
safari
【解决方案1】:
试试这个。把它放在所说的 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 用户可能会在打印对话框下方看到一个空白页