编写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参数解决兼容性问题。