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,数据)的输出是什么?我不希望它显示任何日志,只是为了发送信号。从一个匿名会话中查看我的编辑和屏幕