2009-10-20 60 views
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 默认动作,搜索动作comes.why不能阻止它?如何防止通过MooTools

回答

1

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

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

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

1

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

请参阅How can I disable Alt-Enter in IE?了解关于在IE中禁用ALT-Enter的最新讨论。