能够检测到Ctrl + R但是停止重新加载页面

时间:2016-06-02 11:22:49

标签: javascript jquery browser keycode

我能够检测到Ctrl + R但无法停止重新加载页面。

请帮我解决这个问题。

我正在使用此代码。

$(document).keydown(function(e) {
    if (e.keyCode == 65+17 && e.ctrlKey) {
        alert('ctrl R');
        exit;
        return ;
    }
});

提前致谢。

2 个答案:

答案 0 :(得分:0)

    <!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
    <script>
     $(function () {
document.onkeydown = KeyPress;
function KeyPress(e) {
console.log(e);
      var press = window.event? event : e
      if (press.keyCode == 82 && press.ctrlKey) alert("Ctrl+R");  

     if ($.browser.mozilla) {
                if (e.ctrlKey && keycode == 82) {
                    if (e.preventDefault)
                    {
                        e.preventDefault();
                        e.stopPropagation();
                    }
                }
            } 


if ($.browser.msie) {
            if (window.event.ctrlKey && press.keycode == 82) {
                window.event.returnValue = false;
                window.event.keyCode = 0;
                window.status = "Refresh is disabled";
            } 
}
}

});
    </script>
    </head>
    <body>

    <p>If you click on me, I will disappear.</p>
    <p>Click me away!</p>
    <p>Click me too!</p>

    </body>
    </html>

答案 1 :(得分:0)

帮助用户阻止不需要的页面重新加载的标准/清洁方式是通过覆盖键事件来beforeunload而不是,这实际上是徒劳的:你不知道什么键组合调用页面重新加载(例如,f5在大多数浏览器中都相似),他可能会按CTRL + R并且位置栏聚焦,这样你的页面就没有被捕获的事件,他可能已按下工具栏按钮......

从链接的MDN页面提到标准方法

window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/";

  e.returnValue = confirmationMessage;     // Gecko, Trident, Chrome 34+
  return confirmationMessage;              // Gecko, WebKit, Chrome <34
});

这会在用户尝试重新加载/关闭/离开您的页面时提示用户,无论是什么启动卸载。