我有一个我借用的按键处理程序,它曾用于浏览器,但现在不再适用于webkit浏览器。任何人都可以提供如何修复的建议吗?
这是处理程序:
function handleKeys(e) {
//credit: http://santrajan.blogspot.com/2007/03/cross-browser-keyboard-handler.html
var character;
var evt = (e) ? e : window.event; //IE reports window.event not arg
if (evt.type == "keydown") {
character = evt.keycode;
if (character < 16 || // non printables
(character > 16 && character < 32) || // avoid shift
(character > 32 && character < 41) || // navigation keys
character == 46) { // Delete Key (Add to these if you need)
handleNonChar(character); // function to handle non Characters
nonChar = true;
} else
nonChar = false;
} else { // This is keypress
if (nonChar) return; // Already Handled on keydown
character = (evt.charCode) ?
evt.charCode : evt.keyCode;
if (character > 31 && character < 256) // safari and opera
handleChar(character); //
}
}
在这样的页面中调用处理程序:
<script>
document.onkeydown = function(e) {handleKeys(e)}
document.onkeypress = function(e) {handleKeys(e)}
var nonChar = false;
</script>
谢谢!
添
答案 0 :(得分:0)
如果你配对一个规范化charCode / keyCode差异的JS库,并将它与专用于键盘输入的插件一起使用,那么你应该很清楚。
我已将jQuery与HotKeys Plugin一起使用。但是,您也可以使用shortcut keyboard handling而不使用jQuery(HotKeys插件所基于的)。
我非常喜欢这些提供的键盘快捷键功能 - 但是应该注意某些键盘组合可能会触发(或者用户可能会指望它们触发)特定浏览器中的某些操作。
E.g。您可以捕获[CTRL] + [A]
键盘组合,但如果您阻止选择所有文本 - 我可以看到用户非常恶化。