如何使用多个选项卡检测用户按下了哪个关闭按钮

Sub*_*d30 3 javascript jquery

我发现很多代码来检测浏览器的关闭按钮,但是在调用close选项卡时我得到了一个事件.我只想获得主关闭按钮事件以提醒用户是否留在此页面中.我找到了这段代码.

<script type="text/javascript"> 
window.onbeforeunload = function (evt){
    var message = 'Are you sure you want to leave?'; 
    if (typeof evt == 'undefined') { 
        evt = window.event; 
    } 
    if (evt) { 
        evt.returnValue = message; 
    } return message;  
   } 
</script>
Run Code Online (Sandbox Code Playgroud)

它会提醒用户在单击选项卡关闭时关闭或停留.

现在,我想检测主浏览器关闭事件.由于发现close事件也用于标签关闭.

任何人都可以帮我解决这个问题吗?

Mih*_*ncu 6

浏览器与页面:

浏览器级事件不能直接用于页面级JavaScript.某些事件具有从浏览器到页面的等价物,而有些事件则没有.这是出于安全考虑.

关闭浏览器的选项卡是浏览器级事件.该页面被通知unload正在发生事件.该页面不知道我们是否正在经历"刷新",或"导航到另一个链接",或者该选项卡是否已关闭,或者整个浏览器是否已关闭或某些浏览器插件是否已崩溃.

页面卸载事件也不知道在卸载时是否还有更多打开的窗口/选项卡.有些浏览器甚至可能没有标签(或窗口)的概念.浏览器级别事件是浏览器开发人员和插件开发人员关心的问题.页面级事件是您关注的问题.

页面事件:

可以捕获单击事件,并且可以抑制默认(页面导航)行为并替换为完全不同的行为.

大多数unload事件都是限制性的,它们不允许您替换默认行为,它们只允许您询问用户是否要通过确认对话框离开或停留(具有一些可配置的标题/文本但不包含html).如果用户拒绝您,则无法再控制该页面 - 完成,终止,选项卡将关闭.

如果您想确保用户不通过导航链接或提交表单去任何地方,那么您需要捕获每个相应的事件.关闭标签和窗口不是你的问题.