有时候需要开发一些HTML的活动页面,展示在andoirdTV的webView里,经常需要对焦点逻辑做特殊的处理,比如说按“下”键时,焦点不是移动到当前元素下方的元素,而是移动到旁边的元素。这个时候就需要拦截按键事件。
简单地说,要拦截按键事件,只需要在绑定的onkeydown或者onkeyup方法中返回false
举个栗子:
//绑定按下按键事件
document.onkeydown = function (e) {
var e = e || window.event;
return keyDownEvent(e);
};
//绑定弹起按键时间
document.onkeyup = function (e) {
var e = e || window.event;
return keyUpEvent(e);
};
function keyUpEvent(e) {
var keyCode = e.keyCode;
var elm = $(document.activeElement);
switch (keyCode) {
case KEYDEF.Ok:
//确定键逻辑
break;
case KEYDEF.Back:
//返回键逻辑
break;
}
//不需要拦截按键事件就返回true
return true;
}
function keyDownEvent(e) {
var keyCode = e.keyCode;
//自定义条件
if(true){
//处理逻辑,消费掉按键事件,返回false
return false;
}
switch (keyCode) {
case KEYDEF.Down:
break;
case KEYDEF.Right:
break;
case KEYDEF.Up:
break;
case KEYDEF.Left:
break;
case KEYDEF.Back:
break;
}
//如果不满足自定义条件不需要拦截按键事件则返回true
return true;
}