我曾在其他项目/游戏中使用过这个事件,但它似乎并没有在这个项目上发挥作用。onload事件正在正常工作。
脚本链接在< /body >标记之前的html底部
client.js中的代码
(() => {
// Player Closes window
window.addEventListener("beforeunload", function (e) {
sock.emit('player-leave', player);
alert('window.addEventListener');
});
window.onbeforeunload = function(event) {
sock.emit('player-leave', player);
alert('window.onbeforeunload');
};
window.onunload = function(event) {
sock.emit('player-leave', player);
alert('window.onunload');
};
})();事件不会通过throu,也不会显示警报。
完整代码的git存储库链接:https://github.com/Tw1ster95/drawitgame
编辑:我想我找到了一种方法来使用套接字id来断开播放器,但我仍然想知道为什么它在卸载前不发出信号。
发布于 2022-01-08 23:39:28
这不是onbeforeonload的问题。alert不能工作的原因是现代浏览器在执行beforeunload时会忽略alert()。
HTML规范指出,在卸载前事件期间,对window.alert()、window.confirm()和window.prompt()方法的调用可能被忽略。有关更多细节,请参见HTML规范。
检查它,这里
如果您运行您的网页并继续按一个重新加载键,您可能会在控制台中看到错误消息Blocked alert() when beforeunload。
https://stackoverflow.com/questions/70637104
复制相似问题