gpt4 book ai didi

javascript - Safari:打印 Iframe 时防止出现两个打印对话框

转载 作者:太空狗 更新时间:2023-10-29 13:53:06 31 4
gpt4 key购买 nike

我的网站有一个“打印此页”按钮。

我将静态打印模板 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com