如何在页面刷新时阻止调用onbeforeunload

mym*_*and 10 jquery

我希望在confirmExit()刷新页面时阻止调用该函数.有可能吗?

<script language="JavaScript">
window.onbeforeunload = confirmExit;
function confirmExit()
{
   $.post("test.php");
}
</script>
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 15

你不能.页面刷新就像导航和卸载DOM一样,因此onbeforeunload将始终调用事件.


小智 5

对于您正在寻找的内容,控制刷新网页的最佳方法是使用 onKeyDown 函数。不幸的是,直接从浏览器按下刷新按钮将再次加载 DOM,因此从技术上讲,无法阻止此操作的刷新。

遇到同样的问题,我找到了这个网页http://asquare.net/javascript/tests/KeyCode.html,您可以在其中验证浏览器对键盘事件的响应。在这里,您可以开始弄清楚为什么 onKeyDown 是最佳选择。Chrome 不会对 onKeyPress 函数做出反应。

您只需要一个变量来控制刷新操作。如果用户按下该键,则不会执行 onBeforeUnload 操作。

var refresh = false;  //Control variable to control refresh access
j$(window).bind('beforeunload', function(){
    if (refresh == false) { // If F5 is not pressed
        return "Do you really want to leave?";
    }
});

j$(window).keydown(function(event) {
  if (event.keyCode == 116) { // User presses F5 to refresh
     refresh = true;
   }
});
Run Code Online (Sandbox Code Playgroud)