2

我有使用快捷键的 HTML5 应用程序。在这个应用程序中,我也聊天。当我在聊天窗口中书写时,快捷键也会启动。如何在聊天窗口中排除快捷键?

这就是我的使用方式onkeydown

 <body onkeydown="Gui.doKey(arguments[0] || window.event)">

Gui

var Gui = { 
    doKey: function (event) { 
        var key = event.keyCode || event.charCode; 
        switch (key) { 
            case 83: //s 
                skip(); 
                break; 
            default: 
                console.log(key); 
        }
    }
}
4

3 回答 3

1
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); 
        }
    }
}

请参阅e.target 和 e.currentTarget 之间的区别

于 2013-10-22T19:34:35.760 回答
0

向标记添加一个类以确定是否需要忽略它。让您的 Gui.doKey 方法检查源元素。如果匹配,请在执行任何其他操作之前返回。

HTML:

<div class="ignore_keydown chat_window">...</div>

JS:

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...
    }
}
于 2013-10-22T19:43:43.207 回答
-1

您是否尝试过 jquery :not() 选择器来排除 div,即我认为您的聊天所在的 div? http://api.jquery.com/not-selector/

于 2013-10-22T19:16:53.297 回答