更改 F5 按钮的行为

Posted

技术标签:

【中文标题】更改 F5 按钮的行为【英文标题】:Change the behavior of the F5 button 【发布时间】:2014-12-15 15:24:07 【问题描述】:

我想改变浏览器F5刷新按钮的行为 例如,当用户单击 F5 时,页面将不会刷新并且会出现一些警报,目前我已经尝试使用此代码(我在论坛中搜索后找到)但它不起作用,我参考了 jquery cdn。知道缺少什么吗?

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);
    );

【问题讨论】:

有可能吗?我认为某些特殊键无法更改,例如echap。但我可能是错的。 @Vadorequest-看看下面的帖子***.com/questions/2482059/… 【参考方案1】:

尝试使用这种使用 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 希望能帮到你

【讨论】:

嗨奥利弗,谢谢我试过你的代码(编辑一点,因为那里有一些错字,请看我的编辑帖子)还有其他想法吗?再次感谢! @JohnJerrby 嗨,是的,我确实认为您已经尝试过了。我做了一些研究,看起来你想要做的事情几乎是不可能的,因为你试图破坏一个基本的浏览器功能。 嗨奥利弗我认为根据这篇文章***.com/questions/2482059/… @JohnJerrby 真棒,希望能解决您的问题 奥利弗,谢谢!当我将代码复制到空 html 时它可以工作,但是当我从我的 APP 运行它时它不是,知道可能是什么问题吗?【参考方案2】:

你确定其他代码不会干扰吗?

我在空白页上试过这个:

<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>

它做了它应该做的事情

    我打开页面 => 提示“页面已加载”

    我按 F5 => 警报“F5 命中” => 警报“F5 已识别”

因为我没有收到另一个“页面加载”警报,所以我说页面没有重新加载,然后我按 F5

可能你在你的其他 Javascript 中的某个地方覆盖了文档的 keydown 处理程序?

您收到警报了吗?

编辑:

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

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

【讨论】:

谢谢我已经在浏览器中测试了你的代码,它似乎可以工作,问题是当我将此代码带到我的应用程序时它不起作用,文档准备好被调用,但 F5 功能是不工作,知道如何解决问题吗?我尝试搜索是否有人像你说的那样覆盖了键但没有找到(chrome dev 工具中有一种方法可以找到这样的东西 - 不使用 CTRL+F)? 我会在浏览器(或本地)上对您网站的根文件夹执行基于文件的搜索

以上是关于更改 F5 按钮的行为的主要内容,如果未能解决你的问题,请参考以下文章

如何更改键盘完成按钮的行为?

如何更改 QDialog 中的默认按钮行为

Word VBA:在选择更改时使 IRibbon 无效(实现粗体切换按钮的行为)

在第二次按下时更改标签栏按钮的行为

Vue:如何在按住键盘修饰符时更改按钮的文本?

F5,Ctrl + F5和单击刷新按钮之间的区别?