window.onbeforeunload仅在关闭窗口而不是刷新时运行

时间:2012-06-18 15:27:11

标签: html onbeforeunload

我有这个功能

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

我有一个按钮,当用户按下它时,窗口刷新以更新屏幕值并进行一些数据库调用。我在函数的开头添加了window.onbeforeunload=null;来禁用onbeforeunload,但它仍然被调用。

有没有办法在我的按钮onclick函数中禁用onbeforeunload函数或者只在关闭窗口上调用window.onbeforeunload而不是刷新?

2 个答案:

答案 0 :(得分:5)

以下代码应该有效(应保留在脚本标记之间的head标记内)

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
    }
}​

WORKING DEMO.

答案 1 :(得分:1)

另一种方法是使用Cookie。将cookie设置为标志,就像您想要刷新页面而不需要onbeforeunload函数调用一样。

 window.onbeforeunload = function (e) { 
...      
   canceled = getCookie("canceled");
         if (canceled == "false" || canceled == undefined)
          {//do ur stuff here
          }
...
}

并将您的Cookie设置为5秒,以便在您重新加载页面后立即过期。