ONAFTERPRINT 事件在错误的按钮上触发

问题描述 投票:0回答:3

我需要知道用户是否单击了

print
cancel
按钮,但是如果单击其中任何一个,就会触发
onafterprint
事件,为什么??

window.onafterprint = () => {

    // event should fire only if print button is clicked

}

进入此页面并执行

Ctrl + p
尝试
cancel
print
save
文档并观看
alert

谁能解释一下吗?

javascript google-chrome
3个回答
0
投票

afterprint 事件在关联文档开始打印或打印预览关闭后触发。 MDN

看来通过事件是无法得知的。该规范没有告诉用户代理区分打印或取消打印提示。尽管规范对于实际做什么非常模糊。 WHATWG 规格


0
投票

onafterprint 事件在页面开始打印或打印对话框关闭时发生。这就是为什么两个按钮都会触发事件的原因。

因此,无法知道用户是否单击了“保存”或“取消”。


0
投票

不幸的是,window.print() 没有返回值,当您在打印对话框上单击“取消”或“打印”时,会触发 onafterprint 事件。唯一的方法是让用户亲自确认打印作业是否已发送到打印队列。

© www.soinside.com 2019 - 2024. All rights reserved.