【问题标题】:Able to detect Ctrl+R But stop reloading page能够检测到 Ctrl+R 但停止重新加载页面
【发布时间】:2016-10-02 02:33:46
【问题描述】:

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

请帮我解决这个问题。

我正在使用此代码。

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

提前致谢。

【问题讨论】:

  • 我相当确信 JavaScript 是否可以阻止页面重新加载取决于浏览器的安全策略。
  • 并非所有系统组合键都可以在窗口中管理。尝试return falsee.preventDefault()。不知道为什么你只会寻找这种重新加载的方式。用户可以点击您无法检测到的刷新按钮
  • 我只想创建一个快捷方式来使用ctrl+r 打开我的报告,但是在按下它后会重新加载页面,并且我使用的是角度,所以我不想在这里重新加载页面。
  • 替换“return;”到“返回假;”

标签: javascript jquery browser keycode


【解决方案1】:

帮助用户防止不必要的页面重新加载的标准/干净的方法是通过beforeunloadnot 通过覆盖键事件,这实际上是徒劳的:你不知道调用了什么组合键页面重新加载(例如,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
});

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

【讨论】:

    【解决方案2】:
        <!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>
    

    【讨论】:

    • 大哥,检测到Ctrl+R后重新加载页面,我要修复。
    • 我只是在你提供的 jsfiddle 中检查你的代码,是的,我也在使用 jQuery,
    • 现在试试,mozila和ie和google chrome有区别
    • 我确实对 mozila 进行了测试,因为没有,但我在 ie 中进行了测试并且它正在工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 2019-12-20
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 2013-04-28
    相关资源
    最近更新 更多