【问题标题】:Disable specific function key using jquery使用 jquery 禁用特定的功能键
【发布时间】:2026-01-01 10:45:02
【问题描述】:

我想在我的网页上禁用F8 键。有什么方法可以使用 jquery 或任何相关插件或仅使用 javascript 禁用它??

提前谢谢...:)

爆破

【问题讨论】:

    标签: javascript jquery jquery-ui jquery-plugins javascript-framework


    【解决方案1】:

    点赞Disable F5 key in Safari 4

    但使用 keyCode 119:

    <script>
    var fn = function (e)
    {
    
        if (!e)
            var e = window.event;
    
        var keycode = e.keyCode;
        if (e.which)
            keycode = e.which;
    
        var src = e.srcElement;
        if (e.target)
            src = e.target;    
    
        // 119 = F8
        if (119 == keycode)
        {
        alert('nope')
            // Firefox and other non IE browsers
            if (e.preventDefault)
            {
                e.preventDefault();
                e.stopPropagation();
            }
            // Internet Explorer
            else if (e.keyCode)
            {
                e.keyCode = 0;
                e.returnValue = false;
                e.cancelBubble = true;
            }
    
            return false;
        }
    }
    document.onkeypress=document.onkeydown=document.onkeyup=fn
    </script>
    

    【讨论】:

    • 当我点击页面时它会工作..但当我点击地址栏或我点击内部pdf时不起作用..
    • 没错。 PDF 不会响应页面中的任何 javascript 更改。 PDF 就像一个黑洞,只能由 Acrobat 或您安装的任何阅读器访问
    • 是的,我知道了:) .... 无论如何感谢您的支持.. 让我深入研究一下.. 你知道除了 adobe reader 之外的任何浏览器支持的阅读器会阻止 pdf 保存??
    • 您可以禁用保存在 PDF 本身中。
    • 如果您试图阻止人们复制您的 PDF,那么 Javascript 将无法帮助您。当他们查看 PDF 时,PDF 已经下载并保存在用户的机器上(尽管是临时文件)。任何半高级用户都可以打开他的临时文件,找到最后下载的 PDF,重命名并将其发送给他所有的朋友。
    【解决方案2】:

    你尝试过这样的事情吗?

    $(文档).keydown(函数(e){ 如果(例如 === 119){ 返回假; } });

    我创建了一个 jsfiddle 沙箱,您可以在其中对其进行测试(有效):

    http://jsfiddle.net/alzclarke/yW6H3/

    【讨论】:

      【解决方案3】:

      以下代码适用于大多数浏览器,而我还没有发现任何不兼容的代码。让我知道它是否不起作用。

      关键是将目标事件重新映射到普通键的任何其他原始事件,即使该Fn键表现为普通键。

      $(document).bind("keydown", function (evt){ 
          var keycode = (evt.keyCode?evt.keyCode:evt.charCode);
          //alert(keycode);
          switch(keycode){
              case 119: //F8 key on Windows and most browsers
              case 63243:  //F8 key on Mac Safari
                  evt.preventDefault();                                 
                  //Remapping event
                  evt.originalEvent.keyCode = 0;
                  return false;
                  break;
          }
      });
      

      关键代码的参考和跨浏览器问题的解释可以在这里找到: quirksmode

      【讨论】: