【推荐】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参数解决兼容性问题。
来源:oschina
链接:https://my.oschina.net/u/176766/blog/65169