Javascript 如何使onkeydown在除一个div之外的所有文档上工作
我有HTML5应用程序,我在其中使用快捷键。在这个应用程序中,我还可以聊天。当我在聊天窗口中写东西时,快捷键也会启动。如何在聊天窗口中排除快捷键 这就是我使用onkeydown的方式:Javascript 如何使onkeydown在除一个div之外的所有文档上工作,javascript,html,Javascript,Html,我有HTML5应用程序,我在其中使用快捷键。在这个应用程序中,我还可以聊天。当我在聊天窗口中写东西时,快捷键也会启动。如何在聊天窗口中排除快捷键 这就是我使用onkeydown的方式: <body onkeydown="Gui.doKey(arguments[0] || window.event)"> 您是否尝试了jquery:not()选择器来排除div,我猜您的聊天室所在的div? var Gui={ doKey:函数(事件){ 如果(event.target==) 返回;
<body onkeydown="Gui.doKey(arguments[0] || window.event)">
您是否尝试了jquery:not()选择器来排除div,我猜您的聊天室所在的div?
var Gui={
doKey:函数(事件){
如果(event.target==)
返回;
var key=event.keyCode | | event.charCode;
开关(钥匙){
案例83://s
跳过();
打破
违约:
控制台日志(键);
}
}
}
请参见向标记中添加一个类,以确定是否需要为其忽略按键。让Gui.doKey方法检查源元素。如果匹配,请在执行任何其他操作之前返回 HTML:
“Gui.doKey”来自哪里?在
Gui.doKey
中,检查event.currentTarget==
。如果是这样,abort.var Gui={doKey:function(event){var key=event.keyCode | | | event.charCode;switch(key){case 83://s skip();break;默认值:console.log(key);}@Derija93我尝试了你的建议,但event.currentTarget始终是bodyelement@BartekKosa尝试使用target而不是currentTarget。currentTarget映射到拥有事件侦听器的元素。在这个问题中,jQuery没有被标记。@Kobbe您能给出一个在这个特定场景中如何执行此操作的示例吗?
var Gui = {
doKey: function (event) {
var key = event.keyCode || event.charCode;
switch (key) {
case 83: //s
skip();
break;
default:
console.log(key);
}
}
}
var Gui = {
doKey: function (event) {
if(event.target == <your_div>)
return;
var key = event.keyCode || event.charCode;
switch (key) {
case 83: //s
skip();
break;
default:
console.log(key);
}
}
}
<div class="ignore_keydown chat_window">...</div>
var Gui = {
doKey : function (keyboardEvent) {
// If the class contains the ignore selector, return immediately
if (keyboardEvent.srcElement.className.indexOf('ignore_keydown') === -1) {
return false;
}
// Original code...
}
}