我在网上搜了下,如何屏蔽F1键,要求在FF和IE中都能实现,我发现有两种做法,一种是修改window.onhelp()代码,一种是修改onkeypress代码(FF中调用event.preventDefault(), IE中让event.returnValue = false),我试了下,第二种方法在ff中实现,但在IE中不行,而第一种代码则只能是IE使用,我想请问下为啥第二种方法在IE中没法使用呢?以下是我的代码<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>DisableF1Key</title>
<script language="javascript" src="EventUtil.js"></script>
<script language="javascript">
function disableF1(event)
{
event = EventUtil.getEvent(event);
var keyNum = EventUtil.getKey(event);
if(keyNum == 112)
{
EventUtil.preventDefault(event);
EventUtil.stopPropagation(event);
}
}
/*function window.onhelp()
{
return false;
}*/
</script>
</head><body>
<script language="javascript"> 
EventUtil.addHandle(document, "keydown", disableF1);
</script>
</body>
</html>
EventUtil.jsvar EventUtil = 
{
addHandle : function(element, type, handler)
{
if(element.addEventListener)
{
element.addEventListener(type, handler, false);
}
else if(element.attachEvent)
{
element.attachEvent("on" + type, handler);
}
else
{
element["on" + type] = handler;
}
},
getEvent : function(event)
   {
   return event ? event : window.event;
   },
preventDefault : function(event)
 {
 if(event.preventDefault)
 event.preventDefault();
 else
 event.returnValue = false;
 },
stopPropagation : function(event)
  {
  if(event.stopPropagation)
  event.stopPropagation();
  else
  event.cancelBubble = true;
  },
getKey : function(event)
 {
 if(event.keyCode)
 return event.keyCode;
 else if(event.which)
 return event.which;
 return null;
 }};
谢谢

解决方案 »

  1.   

    <script type="text/javascript"  language="javascript">
     
     function KeyDown()             *//屏蔽F1事件
     {    if(event.keyCode == 112)
         { return false;
         }  
      }   <form id="form1" runat="server" onkeypress="return KeyDown()"  >
      

  2.   

    IE中if (event.keyCode==112) 
    {//屏蔽F1键
    event.keyCode = 0;
    event.cancelBubble = true;
    return false;
    }
      

  3.   

    2楼的代码我在ff下试了可以,但在ie下不行,不知道是不是由于你用的是ASP.net的原因?
    3楼的代码我在IE8下也试了,还是会出来help,汗为啥我用的是DOM的处理,以下代码addHandle : function(element, type, handler)
                {
                    if(element.addEventListener)
                    {
                        element.addEventListener(type, handler, false);
                    }
                    else if(element.attachEvent)
                    {
                        element.attachEvent("on" + type, handler);
                    }
                    else
                    {
                        element["on" + type] = handler;
                    }
                },为什么会不行呢?
      

  4.   

            /** 屏蔽F1帮助 */
            window.onhelp = function() { return false; }   
      

  5.   


    4楼这个代码确实在ie下测试可以用,但是我想问的是为啥我的第一个代码在IE下不行呢?一个很正常的returnValue=false的代码,事件的加载也是用的ie的attachEvent?有谁知道这个么?ps,楼上的谢谢了~~~