Javascript 事件onbeforeunload不是';t以不知名的名义开火
我一直在尝试在卸载之前在Javascript 事件onbeforeunload不是';t以不知名的名义开火,javascript,google-chrome,beacon,sendbeacon,Javascript,Google Chrome,Beacon,Sendbeacon,我一直在尝试在卸载之前在上发送一个信号灯,它似乎在几乎所有的现代浏览器上都能工作,除了隐姓埋名模式下的Chrome 这是适用于所有现代浏览器的代码,除了匿名模式下的Chrome: window.onbeforeunload = function() { navigator.sendBeacon("url"); } 甚至这段代码似乎也不起作用: window.onbeforeunload = function() { console.log('before unload')
上发送一个信号灯,它似乎在几乎所有的现代浏览器上都能工作,除了隐姓埋名模式下的Chrome
这是适用于所有现代浏览器的代码,除了匿名模式下的Chrome:
window.onbeforeunload = function() {
navigator.sendBeacon("url");
}
甚至这段代码似乎也不起作用:
window.onbeforeunload = function() {
console.log('before unload')
}
我做错了什么,还是只是Chrome的错?你的设置是什么(Chrome版本)
在Chrome 80.0.3987.116/Ubuntu 64和Chrome 79.0.3945.130/Windows 10上,下面的代码段无法正常工作:
window.addEventListener('beforeunload', (event) => {
console.log("BEFORE")
navigator.sendBeacon("http://www.google.it");
// Cancel the event as stated by the standard.
event.preventDefault();
// Chrome requires returnValue to be set.
event.returnValue = '';
});
卸载前发送的请求(匿名模式)屏幕:
此外,请注意:
为了对付不需要的弹出窗口,一些浏览器不显示提示
在beforeunload事件处理程序中创建,除非页面已
与…互动。此外,有些根本不显示它们
Ref:您发布的代码片段在Windows 10上对我有效,Chrome 80.0.3987.87匿名,您不应该在卸载之前依赖它。我不需要它是100%可靠,但我很好奇为什么它不工作,在隐姓埋名。此外,我不想向用户发送消息,只想向服务器发送一个信标。在匿名模式下,很可能会禁止所有阻止操作,因此可能会触发卸载事件,但在Windows/navigator实例被销毁之前,您的功能将无法完成。。。胡乱猜测。。。您可以尝试添加一个静态iframe并尝试从中触发卸载,将somjs代码放在“srcDoc”attributeIncognito中不是正确的测试方法。在隐姓埋名中,您仍然激活了您的加载项,这可能会干扰测试。您应该改为尝试来宾模式。我不想显示提示,只想在不中断用户离开站点的情况下发送一个信标。上面的代码段显示了对话框和控制台。日志navigator.sendBeacon(url,数据)的输出是什么?我不希望它显示任何日志,只是为了发送信号。从一个匿名会话中查看我的编辑和屏幕