问题描述
||
我有一个脚本,可以检测歌剧中的长按键,但不能检测出Firefox和Mozilla浏览器中的键。为什么会这样?
我使用此代码:
autoComplete.prototype.keyDown=function(oEvent)
{
oEvent=window.event || oEvent;
iKeyCode=oEvent.keyCode;
switch(iKeyCode)
{
case 38: //up arrow
this.autoComplete.moveUp();
break;
case 40: //down arrow
this.autoComplete.moveDown();
break;
case 13: //return key
window.focus();
break;
case 27: //escape key
this.autoComplete.oDiv.style.display=\"none\";
break;
}
};
这会检测我在Opera中的长按键,但在mozilla中却无法检测到。请建议我一个解决方案,以使我的长按在所有浏览器中都能正常使用。
编辑:从长按中,我的意思是连续按键在这里。例如连续向下按键。
解决方法
对于交叉浏览,请使用keyCode和
var ikeyCode = oEvent.keyCode || oEvent.which ;
现在您可以在所有浏览器中检测到
,我想尝试的是观看keydown的keyup事件,而不是按键。
发生击键时,将时间写入变量,然后使用setTimeout启动计时器。如果键入可能在0.3秒内发生(因此将存储的时间与该事件触发时的当前时间进行比较),则可以将其视为轻按,然后调用所需的任何函数并清除setTimeout。
如果您的计时器像您的示例中一样达到了3秒,则在触发按键之前,用户按住了该按钮,因此显示了警报。
希望有道理。我还没有尝试过,但是听起来很不错。大声笑
,我得到了解决方案...
我在用oText.onkeydown=this.keyDown;
我应该用oText.onkeypress=this.keyDown;
的地方
感谢你的帮助!