8

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

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

有任何想法吗?:)

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

4

3 回答 3

22

内联函数:

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;
});

笔记:

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

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

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

于 2013-02-07T08:40:15.903 回答
0

使用 window.onbeforeunload,当用户离开你的页面时触发它:http: //geekswithblogs.net/hmloo/archive/2012/02/15/use-window.onbeforeunload-event-to-stop-browser-from-closing-或禁用.aspx

于 2013-02-07T08:42:04.703 回答
0

尝试这个:

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

或者,如果你想要构象警报

<script>
window.onbeforeunload = function(e) {  
   return 'Your dialog message';
};
</script>
于 2014-04-15T07:59:41.827 回答