识别刷新和关闭浏览器操作
当两个操作触发 ONUNLOAD 事件时,区分页面刷新和浏览器关闭可能会带来挑战。但是,有一个使用 HTML5 本地存储和客户端/服务器 AJAX 通信的解决方案。
Onunload 事件处理
在页面的窗口中,添加 onunload 事件处理程序:
function myUnload(event) { // Set a local storage flag indicating an unload event if (window.localStorage) { window.localStorage['myUnloadEventFlag'] = new Date().getTime(); } // Notify the server of a disconnection request askServerToDisconnectUserInAFewSeconds(); // Synchronous AJAX call }
Onload 事件处理
在页面正文中,添加 onload 事件处理程序:
function myLoad(event) { if (window.localStorage) { // Check the time between the last unload event and the current time var t0 = Number(window.localStorage['myUnloadEventFlag']); var t1 = new Date().getTime(); var duration = t1 - t0; if (duration < 10 * 1000) { // Page reloaded: Cancel disconnection request askServerToCancelDisconnectionRequest(); // Asynchronous AJAX call } else { // Tab/window closed: Perform desired action } } }
服务器端管理
在服务器上,实现一个过程来收集断开连接请求并调度一个计时器线程来检查超时请求。在 5 秒内(在本示例中),断开请求超时的用户。如果收到断开连接取消,请从列表中删除相应的请求。
此方法还可用于区分选项卡/窗口关闭和链接/表单提交。将事件处理程序放置在所有带有链接或表单及其登陆页面的页面上。
虽然此解决方案使用本地存储,但请注意,它可能不适合不支持 HTML5 本地存储的浏览器。考虑处理这些场景的具体方法。
以上是如何使用HTML5本地存储区分浏览器刷新和关闭?的详细内容。更多信息请关注PHP中文网其他相关文章!