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

一笑奈何 提交于 2019-12-12 11:37:56

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

编写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参数解决兼容性问题。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!