我需要一个脚本来检测所有浏览器上的所有长按或连续按键

时间:2011-05-26 09:48:49

标签: javascript events keyboard-events

我有一个脚本可以检测歌剧中的长按键,但不会在firfox 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;
    }
 };

这可以检测我在歌剧中的长按键,但不是在mozilla中。请给我一个解决方案,以便我的长按键在所有浏览器中都能正常工作。

编辑:从长按键开始,我的意思是连续按键在这里。就像连续按下按键一样。

3 个答案:

答案 0 :(得分:0)

用于交叉浏览使用keyCode和

var ikeyCode = oEvent.keyCode || oEvent.which ;

现在您可以在所有浏览器中检测到

答案 1 :(得分:0)

我尝试的是观看keydown keyup事件而不是keypress。 发生keydown时,将时间写入变量并使用setTimeout启动计时器。如果密钥在0.3秒内发生(因此将存储的时间与此事件触发时的当前时间进行比较)将其视为点击并调用您需要的任何功能并清除setTimeout。 如果您的计时器达到3秒,就像您的示例中的键盘被触发一样,那么用户按住该按钮以显示警报。 希望有道理。我没试过,但听起来不错。 LOL

答案 2 :(得分:0)

我得到了解决方案...... 我正在使用oText.onkeydown=this.keyDown;  我应该使用oText.onkeypress=this.keyDown;

感谢大家的帮助!