在Chrome和Safari中使用onafterprint

3
我知道直到最近,onafterprint 只有IE原生支持。 近年来,HTML5已将其添加到事件列表中。 我只能在Firefox中成功使用它,但无法在Chrome或Safari中使其正常工作。
似乎仅在主体中使用时才能在Firefox中起作用:
<body onafterprint="printIt()">

该函数的脚本如下:

$(document).ready(function() {
$('.printMe').click(function() {
    window.print();
    return false;
});
 });

function printIt()
{
$('#confirmPrint').show();
};

点击 .printMe 按钮将打开打印窗口。点击“打印”或“取消”将在 #confirmPrint 中显示一条消息。我不太担心能否判断他们是点击了取消还是打印。我只关心它在 Chrome 和 Safari 中是否正常运行。非常感谢您的帮助。如果还没有明显的话,我正在使用 jQuery。

1个回答

1

经过一些实验,我认为可以放心地说,onafterprint没有太多考虑的价值。

  • 即使用户在打印对话框中点击了“取消”而不是“确定”,Firefox 仍然会触发它。
  • IE8 显然甚至在打印对话框出现之前就会触发它。
  • Chrome 根本不触发它。

相反,在调用 print() 后直接执行您想要执行的操作即可。

$(document).ready(function() {
$('.printMe').click(function() {
    window.print();
    printIt();
    return false;
  });
});

function printIt()
{
$('#confirmPrint').show();
};

2
这似乎已经不再起作用了。在Chrome中,如果我在window.print()之后直接使用window.close(),则在用户有机会与打印对话框进行交互之前窗口就关闭了。现在需要setTimeout(function(){ window.close() }, 0)来让Chrome在关闭窗口之前允许打印对话框完成。 - MushinNoShin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接