我想通过截取文档对象的keypress事件处理程序而不是accesskey属性,在我的Web应用程序中添加对键盘快捷键的支持.
问题是每个浏览器都有自己的键盘组合,因此不可能提出一组适用于所有Web浏览器并且一致的键盘组合.(例如,如果保存的快捷方式是Ctrl+ Shift+ S,那将是愚蠢的.一个删除是Alt+ D.)
所以我认为在我的几页中完全覆盖浏览器快捷方式会更简单.
抛开所有缺点,是否有可能?如果是这样,你怎么做?
ant*_*r15 35
onkeydown = function(e){
if(e.ctrlKey && e.keyCode == 'S'.charCodeAt(0)){
e.preventDefault();
//your saving code
}
}
Run Code Online (Sandbox Code Playgroud)
Bra*_*son 14
这里有一个很好的报道:http://unixpapa.com/js/key.html
至于是否应该这样做,stackoverflow的问题编辑器会覆盖相当多的键而不会中断太多(将鼠标悬停在工具栏按钮上).
小智 10
以下是我对此问题的解决方案:
大多数(如果不是全部)浏览器的快捷方式都将被覆盖.只有系统的,如Alt+ Tab或Windows键不会.
document.onkeydown = overrideKeyboardEvent;
document.onkeyup = overrideKeyboardEvent;
var keyIsDown = {};
function overrideKeyboardEvent(e){
switch(e.type){
case "keydown":
if(!keyIsDown[e.keyCode]){
keyIsDown[e.keyCode] = true;
// do key down stuff here
}
break;
case "keyup":
delete(keyIsDown[e.keyCode]);
// do key up stuff here
break;
}
disabledEventPropagation(e);
e.preventDefault();
return false;
}
function disabledEventPropagation(e){
if(e){
if(e.stopPropagation){
e.stopPropagation();
} else if(window.event){
window.event.cancelBubble = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47649 次 |
| 最近记录: |