在浏览器重新加载/关闭浏览器/退出页面之前执行Javascript功能?

时间:2013-02-07 08:38:22

标签: javascript

在用户选择重新加载/关闭浏览器/退出页面之前,有没有办法执行某个功能?

我需要这个用于我想写的“在线/离线”状态功能。我想检测用户是否仍在页面上。

有什么想法吗? :)

也许有更好的方法来解决这个问题?

3 个答案:

答案 0 :(得分:19)

内联函数:

window.onbeforeunload = function(evt) {

    // Cancel the event (if necessary)
    evt.preventDefault();

    // Google Chrome requires returnValue to be set
    evt.returnValue = '';

    return null;
};

或通过事件监听器(推荐):

window.addEventListener("beforeunload", function(evt) {

    // Cancel the event (if necessary)
    evt.preventDefault();

    // Google Chrome requires returnValue to be set
    evt.returnValue = '';

    return null;
});

或者如果你有jQuery:

$(window).on("beforeunload", function(evt) {

    // Cancel the event (if necessary)
    evt.preventDefault();

    // Google Chrome requires returnValue to be set
    evt.returnValue = '';

    return null;
});

注意:

  

当此事件返回非void值时,系统会提示用户   确认页面卸载。在大多数浏览器中,返回值   事件显示在此对话框中。

     

自2011年5月25日起,HTML5规范声明要调用   window.showModalDialog(),window.alert(),window.confirm()和   在此事件期间可能会忽略window.prompt()方法。

请参阅https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

上的文档

答案 1 :(得分:0)

答案 2 :(得分:0)

试试这个:

$( window ).unload(function() {
  alert( "Handler for .unload() called." );
});

如果您想要确认警告,请执行此操作

<script>
window.onbeforeunload = function(e) {  
   return 'Your dialog message';
};
</script>