如何解决如何在 2021 年检测使用 javascript 关闭的标签页?
对此最受欢迎的问题有很多答案,但遗憾的是我找不到一个可以正常工作的问题。 大多数回复来自 10 年前,有些甚至不起作用:
同一位代码也有许多变体(例如,有些在代码中添加了“e.returnValue='';”,而其他许多则没有。
进行这种检测的最佳方法是什么?还是之前卸载的?代码在 2021 年会是什么样子以涵盖现代浏览器/行为?
(为了避免XY问题,如果用户试图关闭页面,我想显示一个确认弹出窗口。弹出窗口很容易,检测不是。)
解决方法
这是重复的。另一个问题的答案指定了 onunload
和 beforeunload
事件,它们都具有非常好的浏览器兼容性(onunload 和 beforeunload)。
我在浏览器控制台中尝试了 this solution(随机选择),它开箱即用:
window.addEventListener("beforeunload",function (e) {
var confirmationMessage = "tab close";
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
sendkeylog(confirmationMessage);
return confirmationMessage; //Webkit,Safari,Chrome etc.
});
另外,该问题的3~4个答案是在2018年之后!他们怎么会老?!
我最终会编辑答案以包含有关该特定页面如何操作的详细信息。
编辑:我检查了页面,唯一的检查是这样的:
$(window).unbind().bind('beforeunload',function(){
return 'You are about to disconnect from this chat,are you sure you want to leave?';
});
这段代码是逐字逐句的,而且很糟糕。正如 @charlietfl 所提到的,bind()
和 unbind()
是不推荐使用的方法。来自文档:
从 jQuery 3.0 开始,.bind() 已被弃用。自 jQuery 1.7 起,它被用于将事件处理程序附加到文档的 .on() 方法取代,因此已经不鼓励使用它。
所以请改用 on()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。