计算JavaScript中同时按下的键数
可以数一数同时按下多少键吗?我已经走了很长的路,但是当我从我的浏览器窗口中切换时,我得到了一些不想要的行为。如果在远离浏览器窗口时按住x个键,然后在另一个窗口中释放这些键,则在返回浏览器窗口时,numKeys阵列保持不变。也许你可以检查返回浏览器窗口时按下了多少键 到目前为止,我的代码是:计算JavaScript中同时按下的键数,javascript,jquery,Javascript,Jquery,可以数一数同时按下多少键吗?我已经走了很长的路,但是当我从我的浏览器窗口中切换时,我得到了一些不想要的行为。如果在远离浏览器窗口时按住x个键,然后在另一个窗口中释放这些键,则在返回浏览器窗口时,numKeys阵列保持不变。也许你可以检查返回浏览器窗口时按下了多少键 到目前为止,我的代码是: var numKeys = []; $(document).keydown(function(e){ if(numKeys.indexOf(e.keyCode) == -1){ nu
var numKeys = [];
$(document).keydown(function(e){
if(numKeys.indexOf(e.keyCode) == -1){
numKeys.push(e.keyCode);
}
document.getElementById('test').innerHTML = numKeys.length;
});
$(document).keyup(function(e){
if(numKeys.indexOf(e.keyCode) > -1){
var index = numKeys.indexOf(e.keyCode);
if(index > -1){ numKeys.splice(index, 1); }
}
document.getElementById('test').innerHTML = numKeys.length;
});
试试这个(更新):
var cpt = 0;
var codes = "";
$(function () {
$(document).keydown(function (e) {
if (codes.indexOf(";" + e.keyCode + ";") == -1) {
cpt++;
codes += ";" + e.keyCode + ";";
}
});
$(document).keyup(function (e) {
var tmp = ";" + e.keyCode + ";";
if (codes.indexOf(tmp) != -1) {
cpt--;
var part1 = codes.substring(0,codes.indexOf(tmp));
var part2 = codes.substring(codes.indexOf(tmp)+tmp.length );
codes=part1+part2;
}
});
});
新的工作模式;)链接:试试这个(更新):
var cpt = 0;
var codes = "";
$(function () {
$(document).keydown(function (e) {
if (codes.indexOf(";" + e.keyCode + ";") == -1) {
cpt++;
codes += ";" + e.keyCode + ";";
}
});
$(document).keyup(function (e) {
var tmp = ";" + e.keyCode + ";";
if (codes.indexOf(tmp) != -1) {
cpt--;
var part1 = codes.substring(0,codes.indexOf(tmp));
var part2 = codes.substring(codes.indexOf(tmp)+tmp.length );
codes=part1+part2;
}
});
});
新的工作模式;)链接:让我们保持简单。想法是在
keydown
上将对象为event.keyCode
的键设置为true,并在keydup
上删除。然后计算键中true
的实例数
var keys = [];
$(function () {
$(document).keydown(function (event) {
keys[event.keyCode] = true;
var count = 0;
for (var i = 0; i < keys.length; i++) {
if (keys[i]) count++;
}
console.log(count);
});
$(document).keyup(function (e) {
delete keys[e.keyCode];
});
});
var-keys=[];
$(函数(){
$(文档).keydown(函数(事件){
keys[event.keyCode]=true;
var计数=0;
对于(变量i=0;i
让我们保持简单。想法是在keydown
上将对象为event.keyCode
的键设置为true,并在keydup
上删除。然后计算键中true
的实例数
var keys = [];
$(function () {
$(document).keydown(function (event) {
keys[event.keyCode] = true;
var count = 0;
for (var i = 0; i < keys.length; i++) {
if (keys[i]) count++;
}
console.log(count);
});
$(document).keyup(function (e) {
delete keys[e.keyCode];
});
});
var-keys=[];
$(函数(){
$(文档).keydown(函数(事件){
keys[event.keyCode]=true;
var计数=0;
对于(变量i=0;i
我决定分享几分钟前在上面的评论中提到并链接的我的代码片段。但是,为了说明这一点,我发现键盘很难同时按下/接受四个或五个以上的键,这就是为什么所有这些尝试可能都是无用的:)
工作我决定分享几分钟前在上面的评论中提到并链接的我的代码片段。但是,为了说明这一点,我发现键盘很难同时按下/接受四个或五个以上的键,这就是为什么所有这些尝试可能都是无用的:)
工作解决问题的简单方法是在用户离开选项卡时清除按下的键。您可以像这样使用事件:
window.onblur = function () {
numKeys = [];
};
请注意,此解决方案不会意识到您在另一个窗口中按下的键。(例如,在另一个窗口中按“向上”,然后再次选择此窗口)解决问题的简单方法是在用户离开选项卡时清除按下的键。您可以像这样使用事件:
window.onblur = function () {
numKeys = [];
};
请注意,此解决方案不会意识到您在另一个窗口中按下的键。(例如,在另一个窗口中按“向上”,然后再次选择此窗口)但它只显示已按的数量,而不是当前的数字。如果我按A、S和D并释放D,它仍然会显示3。你的JSFIDLE与你的代码片段无关:)我的键盘发出疯狂的哔哔声+1即使我不能用四个以上的键测试它(就像我不能使用我的片段)普通键盘不支持持有超过3或4个键,如果你不得不多考虑购买一个玩家键盘,但它只告诉有多少已经被按下,而不是当前的数字。如果我按A、S和D并释放D,它仍然会显示3。你的JSFIDLE与你的代码片段无关:)我的键盘发出疯狂的哔哔声+1即使我不能用四个以上的键测试它(就像我不能使用我的片段)普通键盘不支持持有超过3或4个键,如果你不得不多考虑购买一个玩家键盘,你可以重置所有的键,如果用户在代码中像标签一样。真的没有办法知道用户在另一个窗口中做了什么,我很感谢你带来了这么多疯狂的想法;)看看这个-'因为我不确定你的目标,我发现很难同时按下几个键。。。。我希望你们能给我+1,至少因为我设法锁上了键盘,试图让你们的疯狂想法成真;))@你的回答帮助我解决了我的问题。如果你把它作为一个答案,我会接受它。@Danieltovsson把它作为一个答案添加了进来。如果用户像代码中那样弹出标签,你可以重置所有的键。真的没有办法知道用户在另一个窗口中做了什么,我很感谢你带来了这么多疯狂的想法;)看看这个-'因为我不确定你的目标,我发现很难同时按下几个键。。。。我希望你们能给我+1,至少因为我设法锁上了键盘,试图让你们的疯狂想法成真;))@你的回答帮助我解决了我的问题。“如果你把它作为一个答案,我会接受的。”丹尼尔托维森补充道