0
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
    <script language="JavaScript" src="mootools-1.2.3-core-nc.js"></script>
    <script language="JavaScript" src="mootools-1.2.3.1-more-nc.js"></script>
 </HEAD>
 <BODY id='body'>
 </BODY>
  <Script> 
  function onkeydown(e){
            alert(e.key);
            e.keyCode=0;   
                    e.stop();
            return   false;   

    }
  Event.Keys.F3 = 114;
  window.addEvent('domready', function() {
                    document.addEvent("keydown", this.onkeydown);
                                                                 }) ;
                </script>
</HTML>

在 IE8 中打开它,按F3,搜索动作来了。为什么我不能阻止它?

4

2 回答 2

1

Internet Explorer 和大多数其他浏览器会锁定 JavaScript 中 F 键的使用。出于明显的原因,禁止重新绑定这些密钥;如果我们允许重新绑定 F5 键,想象一下混乱!

技术上的答案是keydown和keyup事件在到达JS层之前就被应用程序拦截了。正如您可以在事件中返回 true 或 false 以防止传播一样,应用程序停止将 keydown 和 keyup 事件传播到其受信任域之外的脚本接口,例如。您只能在浏览器插件和工具栏内覆盖 F3 键,但不能在网页内覆盖。

简而言之:尝试重新绑定另一个键,F 键不容易跨浏览器重新绑定。

于 2009-10-20T11:39:03.603 回答
1

因为这是浏览器的默认操作,几乎没有一个很好的借口来覆盖预期的行为。

请参阅如何在 IE 中禁用 Alt-Enter?最近关于在 IE 中禁用 ALT-Enter 的讨论。

于 2009-10-20T11:26:57.730 回答