【发布时间】:2020-05-29 17:20:32
【问题描述】:
我一直在尝试在beforeunload 上发送信标,它似乎可以在几乎所有现代浏览器上运行,除了处于隐身模式的 Chrome。
这是适用于所有现代浏览器的代码,除了处于隐身模式的 Chrome:
window.onbeforeunload = function() {
navigator.sendBeacon("url");
}
甚至这段代码似乎都不起作用:
window.onbeforeunload = function() {
console.log('before unload')
}
我做错了什么还是只是 Chrome 的错?
【问题讨论】:
-
您发布的 sn-p 在 Windows 10、Chrome 80.0.3987.87 incognito 上为我工作
-
你不应该依赖onbeforeunload。 developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/…
-
我不需要它是 100% 可靠的,但我很好奇为什么它在隐身模式下不起作用。另外我不想向用户发送消息,只是向服务器发送信标。
-
在隐身模式下很可能会禁止所有阻止操作,因此可能会触发卸载事件,但在窗口/导航器实例被破坏之前您的功能不会完成......一个疯狂的猜测......你可以尝试添加一个静态 iframe 并尝试从中触发卸载,将 som JS 代码放在“srcDoc”属性中
-
隐身不是正确的测试方式。在隐身模式下,您仍然激活了插件,这可能会干扰测试。您应该尝试使用访客模式。
标签: javascript google-chrome beacon sendbeacon