Javascript 关闭窗口时调用函数,但刷新时不调用

Javascript 关闭窗口时调用函数,但刷新时不调用,javascript,Javascript,我想编写javascript,在用户关闭选项卡或浏览器时调用函数,我使用beforeunload,但在刷新网站时也会调用此方法。是否有任何解决方案可以使该方法仅在我关闭窗口时调用,而不是刷新页面?您不能这样做,页面刷新与导航离开相同,因此事件将始终被触发 也许你可以试试这样的 window.onload=function(){ window.onbeforeunload = function(){ return "Are you sure?";

我想编写javascript,在用户关闭选项卡或浏览器时调用函数,我使用beforeunload,但在刷新网站时也会调用此方法。是否有任何解决方案可以使该方法仅在我关闭窗口时调用,而不是刷新页面?

您不能这样做,页面刷新与导航离开相同,因此事件将始终被触发

也许你可以试试这样的

window.onload=function(){

    window.onbeforeunload = function(){        
        return "Are you sure?";        
    }

    document.getElementById('refresh').onclick=function(){
        window.onbeforeunload = null;
        window.location.reload(); // replace with your code
    }
}​

回答为

否。从文档的角度来看,页面刷新和关闭窗口之间没有区别:在这两种情况下,文档都被卸载。这取决于javascript函数。我过去所做的是有一个用于卸载的处理程序和一个用于加载的处理程序。根据调用的不同,我为卸载事件设置了计时器,如果加载事件触发,则取消计时器。@Smeegs,我真的看不出您如何管理它。卸载文档时,计时器应该已经停止,下一个
load
事件在另一个文档中引发。@FrédéricHamidi,这就是为什么我说它取决于函数的原因。我的方法要求将数据写入cookie或服务器。我指定的“计时器”不是js计时器。@Smeegs,啊,我明白了。如果服务器参与进来,那确实是另一回事:)记住,所有答案都应该是自包含的。至少考虑一下如果链接脱机会发生什么。谢谢,修改后的答案。