为非字符键抑制keyPress?

时间:2011-02-05 13:33:28

标签: javascript google-chrome keyboard

有没有办法阻止像F1这样的按键被按下?

经过短暂的搜索,我找到了这个网站:

http://www.cambiaresearch.com/c4/789d4357-60e9-4dbd-8e8c-affb2ebd6960/How-Do-I-Suppress-a-Keystroke-in-a-Browser-Input-Box-Using-Javascript.aspx

这样就可以抑制像按下'a'这样的按键(它不会放在文本框中),但像'tab','F1'等按键仍在工作,即焦点确实会改变,我正在使用谷歌浏览器,Chrome帮助网站会弹出。

我特别谈论谷歌Chrome;该解决方案也不必在其他浏览器中工作。

这有可能吗?若然,怎么样?

感谢。

2 个答案:

答案 0 :(得分:4)

当按键不是字符时,不一定会触发

keypress。因此浏览器可能不会触发退格事件, F1 ,向下键等。

尝试取消keydown上的活动:

element.addEventListener('keydown', function(e) {
    if (e.which === 112) { // F1 pressed
        e.preventDefault(); // cancel the event
    }
}

请注意,这适用于Chrome和其他符合标准的浏览器,但不适用于Internet Explorer< 9。

答案 1 :(得分:0)

我非常怀疑这是可能的。不仅可以干扰正常的程序行为(例如, F5 刷新页面,或者 ALT + F4 来关闭浏览器) ,但在快速测试中,它看起来像 F1 等键,没有事件被触发,因此输入无法接收它。