我目前正在查看窗口的“卸载”事件,以尝试确定如何触发“卸载”事件,但收效甚微。有没有办法确定如何触发javascript事件?
基本上我只需要在浏览器窗口关闭时执行某些代码,而不是刷新或导航。
目的:当客户更新我们的软件时,更新会将他们的第一个互联网请求重定向到优惠页面。有一个“不要打扰”选项的按钮,但有些用户只需关闭他们的浏览器。关闭浏览器后,我需要复制“请勿打扰”功能,以便用户不再被重定向到优惠页面。由于离开页面的方式不同,简单地附加到“卸载”事件将不起作用。
答案 0 :(得分:14)
不,如果有,那将取决于浏览器。 当用户关闭页面时,您尝试运行哪种代码? 是注销用户吗? 如果浏览器崩溃或网络连接断开,用户将无法注销(如果计算机进入睡眠/休眠模式,则可能不会注销)。
如果是出于注销目的,您应该在服务器上使用时间戳变量,该变量随每个请求更新(或使用ajax-ping),如果在指定时间内没有看到用户,则注销用户
更新:在stackoverflow找到this answer。
答案 1 :(得分:2)
是的,有一个解决方案!
我设计了一个基于onBeforeUnload + onLoad事件,HTML5本地存储和客户端/服务器通信的解决方案。请参阅https://stackoverflow.com/a/13916847/698168上的详细信息。
答案 2 :(得分:-4)
我使用键盘“嗅探”的方法,因为它寻找keydown的“F5”,“ctrl + r”,“alt-f4”,“退格”等等,如果它发现它们流过键盘事件队列,它适当地设置布尔变量以捕获该状态...然后我使用“onbeforeunload”函数处理程序,它测试那些布尔状态变量来决定做什么。
您甚至可以在键盘处理中使用preventDefault(),bubbles = false和returnValue = false来关闭各种键盘敲击(例如“ctrl + n”或“F1”)。
这个东西不适合胆小的人,但它肯定可以通过一些持久性和大量的跨浏览器测试来实现!