php / javascript阻止页面重新加载/刷新

时间:2014-01-31 14:23:28

标签: javascript php jquery html

在我的项目中,我有一个php页面,我想在浏览器重新加载时,或者F5页面重定向到另一个页面。 我已插入此代码:

<script type="text/javascript">
window.onbeforeunload = function() {
    window.location.href = "../index.html";
}
</script>

如果不是window.location.href指令,我插入警报(“test”);代码运行,但我的代码在刷新的情况下页面无法重定向到index.html。为什么呢?

1 个答案:

答案 0 :(得分:1)

您可以捕获 F5 CTRL + R 按键并在重定向之前处理事件。虽然更改任何默认浏览器行为可能会被视为evil,而您的网站用户可能会更加烦恼。

这里我提供了一个示例函数来处理用户尝试刷新页面时的重定向。 http://jsfiddle.net/dQEeW/

它的核心和处理位置变化的是这个事件绑定。

$(document).bind('keydown', function( event ){
        if( event !== undefined ) {
          if( (event.keyCode == 82 &&
                event.ctrlKey
               ) || (event.keyCode == 116) 
            ) {
              event.keyCode = 0;

              if(destination) window.location.href =  destination;

            return !destination; //false if destination was set true otherwise.
          }
        }
    });

该函数基于another SO answer,但我将其限制为仅处理F5并将其扩展一点以处理CTRL + R.您只能限制键盘驱动的刷新。

yet another SO answer拉出你可能想要捕获页面卸载并返回一个字符串,以警告用户他们正在尝试做一些它没有被设计的事情。

window.onbeforeunload = confirmExit;
  function confirmExit()
  {
      return "You have attempted to leave this page.  If you have made any changes to the fields without clicking the Save button, your changes will be lost.  Are you sure you want to exit this page?";
  }

这应该让你有机会解决他们想要离开的原因,并有机会取消它。