關於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參數解決兼容性問題。
相關文章
相關標籤/搜索