在网络浏览器中捕获选项卡关闭事件?
时间:2020-03-06 14:46:24 来源:igfitidea点击:
有什么方法可以知道用户是否在网络浏览器中关闭了标签页?特别是IE7,还有FireFox等。如果包含我们网站的当前标签页关闭,我希望能够通过asp代码处理这种情况。
解决方案
如果我们不是document.unload呢?
添加一个" onbeforeunload"事件。它可以在浏览器/选项卡关闭之前执行代码。
如果我们需要知道何时在服务器端关闭页面,最好的选择是定期从页面ping服务器(例如,通过XMLHttpRequest)。停止ping后,页面将关闭。如果浏览器崩溃,被终止或者计算机已关闭,这也将起作用。
正如Eran Galperin所建议的那样,请使用onbeforeunload。特别是,返回一个字符串,该字符串将包含在确认对话框中,该对话框将允许用户选择是否离开页面。每个浏览器在返回的字符串前后都包含一些文本,因此我们应该在不同的浏览器中进行测试,以查看向用户显示的内容。
我确定OP是从网页本身的上下文中询问的,但是对于遇到此问题的任何Firefox-addon-developers,我们都可以使用TabClose
事件。 https://developer.mozilla.org/zh_CN/Code_snippets/Tabbed_browser#Notification_when_a_tab_is_added_or_removed
在以下事件上也会调用onbeforeunload-
* Close the current browser window. * Navigate to another location by entering a new address or selecting a Favorite. * Click the Back, Forward, Refresh, or Home button. * Click an anchor that refers the browser to another Web page. * Invoke the anchor.click method. * Invoke the document.write method. * Invoke the document.open method. * Invoke the document.close method. * Invoke the window.close method. * Invoke the window.open method, providing the possible value _self for the window name. * Invoke the window.navigate or NavigateAndFind method. * Invoke the location.replace method. * Invoke the location.reload method. * Specify a new value for the location.href property. * Submit a form to the address specified in the ACTION attribute via the INPUT type=submit control, or invoke the form.submit method.
因此,如果我们试图在用户关闭选项卡或者浏览器窗口时注销用户,则最终他们将在每次用户单击链接或者提交页面时将其注销。