关于FireFox下event is not defined"的问题

编写MyShortKey.js过程中遇到一个问题,如下:

函数GetKeyCode2用于获取按键键值,如下:
function GetKeyCode2()
{
 var ex = event || window.event;
 //var keycode = e.which;
 var keycodes = ex.charCode || ex.keyCode;
 return keycodes;
}

执行函数如下:
window.onload = function()
 {
  document.onkeyup = function(){
   //alert("按键事件执行了!");
   //xGetKeyCode(event);
   document.getElementById("xkeycodesx").innerHTML = "已经载入!" + GetKeyCode2();
   //document.getElementById("xkeycodesx").innerHTML = "已经载入!";
   };
 };

以上代码在IE、OP、CH、SF等浏览器都正常运行,但在FF下却不运行,使用FF的FireBug插件得知错误信息为“ event is not defined
上网查找资料,得知:
         原因是因为在Firefox中使用了不同的事件对象模型,不同于IE Dom,用的是W3C Dom。Firefox DOM中并无event,采用以下方法解决
function GetKeyCode2(e)
{
 //var ex = event || window.event;
 //var keycode = e.which;
 //var keycodes = ex.charCode || ex.keyCode;
 //return keycodes;
 var currKey=0,e=e ? e : (window.event ? window.event : arguments[0]);
 currKey=e.keyCode||e.which||es.charCode;
   var keyName = String.fromCharCode(currKey);
  //alert("按键码: " + currKey + " 字符: " + keyName);
  //currKey = "ABC";
  return currKey;
}

调用方法:
 window.onload = function()
 {
  document.onkeyup = function(event){
   //alert("按键事件执行了!");
   //xGetKeyCode(event);
   document.getElementById("xkeycodesx").innerHTML = "已经载入!" + GetKeyCode2(event);
   //document.getElementById("xkeycodesx").innerHTML = "已经载入!";
   };
 };

通过多传递一个event参数解决兼容性问题。

你可能感兴趣的:(JavaScript,js,event,defined,is,not)