2013-02-07 48 views
6

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

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

任何想法? :)

也许有这种更好的方法?

+0

window.onbeforeunload =函数(){...} – C5H8NNaO4

+2

window.onbeforeunload,参考:https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload – PatrikAkerstrand

回答

16

内联:

window.onbeforeunload = function(event) { 
    // do something 
    return null; 
}; 

或运行预先定义的函数:

window.onbeforeunload = myFunction; 

var myFunction = function(event) { 
    // do something 
    return null; 
} 

注:

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

自2011年5月,调用 window.showModalDialog(),window.alert(),window.confirm()和 window.prompt HTML5规范状态25()方法可以此事件中被忽略。

https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload

+2

Downvoters,护理评论,为什么? –

+0

如果你返回一个字符串,那么这将在弹出窗口中显示为一条消息给用户。空/返回值将允许浏览器像往常一样卸载页面。看到这里MDN参考:https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload – PatrikAkerstrand

+0

-1增加不必要的函数声明,我将它,如果你补充一点,变为+1(如果)返回值显示在提示框中,询问用户他/她是否真的想离开该页面 – C5H8NNaO4

0

试试这个:

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

OR这一点,如果你想构警报

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