更改F5按钮的行为

时间:2014-10-20 15:19:28

标签: javascript jquery google-chrome firefox mozilla

我想更改浏览器的 F5 刷新按钮的行为 例如,当用户点击F5时,页面将不会刷新,并且会显示一些警告,目前我已尝试使用此代码(我在论坛中搜索后找到),但它不起作用,我参考jquery cdn.any想法缺少什么?

function disableF5(e) {
debugger;
    alert("clicked");
    if (e.which === 116 || e.keyCode === 116) {

        e.preventDefault();
        alert("clicked");
    }
}

$(function() {

    $(document).on("keydown", disableF5);
});

我也尝试过以下哪个也不起作用,不知道我在这里想念的是什么?

 document.addEventListener('keydown', function(e) {
     debugger;
     if(e.which === 116 || e.keyCode === 116) {
         alert("1234");
         e.preventDefault();
     }

编辑

还尝试了以下内容,但仍未在调试器中停止,我也没有看到警报(我提供的所有示例都在文档中停止)

function disableF5(e) {
    if ((e.which || e.keyCode) === 116 || (e.which || e.keyCode) === 82) {
        debugger;
        alert("test")
        e.preventDefault();
    }}

    $(document).ready(function() {
        $(document).on("keydown", disableF5);
    });

2 个答案:

答案 0 :(得分:5)

尝试使用此方法使用JavaScript和Jquery:

function disableF5(e) {
  if ((e.which || e.keyCode) == 116 || (e.which || e.keyCode) == 82)
  e.preventDefault();
};

$(document).ready(function(){
  $(document).on("keydown", disableF5);
});

注意:
我不建议阻止页面刷新,但我建议使用弹出警告用户关于导航离开页面,例如:

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

source
我希望我帮助

答案 1 :(得分:1)

您确定其他代码无法干扰吗?

我在空白页面上试过这个:

<html>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
function disableF5(e) {
  debugger;
  alert("F5 Hit");
  if (e.which === 116 || e.keyCode === 116) {
    e.preventDefault();
    alert("F5 Identified");
  }
}

$(function() {
    alert("Page loaded");
    $(document).on("keydown", disableF5);
});
</script>

</html>

它做它应该做的事情

  1. 我打开了页面 =&GT;提醒“页面已加载”

  2. 我点击了F5 =&GT;警报“F5命中” =&GT;提醒“F5已识别”

  3. 由于我没有收到另一个“页面加载”警报,我说,页面没有重新加载然后我点击了F5

    可能是你在其他Javascript中的某个地方覆盖文件的keydown Handler?

    你收到警报吗?

    编辑:

    e.keyCode === 82标识“r”键...仅在使用“ctrl”键时才有意义(ctrl + r = reload)

    if(e.keyCode === 82 && e.ctrlKey)