編寫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參數解決兼容性問題。