Javascript键序列重定向函数
我试着做一个函数,如果按下一系列特定的键,就会产生一个重定向函数。我只知道如何处理一个字符,但不知道如何在一系列字符之后重定向。到目前为止,代码如下:Javascript键序列重定向函数,javascript,Javascript,我试着做一个函数,如果按下一系列特定的键,就会产生一个重定向函数。我只知道如何处理一个字符,但不知道如何在一系列字符之后重定向。到目前为止,代码如下: document.onkeydown= function(key){ reactKey(key); } function reactKey(evt) { if (evt.keyCode == 73) { if (evt.keyCode == 76) { window.location = "http://www
document.onkeydown= function(key){ reactKey(key); }
function reactKey(evt) {
if (evt.keyCode == 73) {
if (evt.keyCode == 76) {
window.location = "http://www.google.com";
}
}
}
});
}
$(document).ready(main);
新代码:
document.onkeydown=functionkey{reactKeykey;}
function reactKey(evt) {
if(evt.keyCode== 73) {
string key1 = 73;
}{
if(evt.keyCode== 76) {
string key2 = 76;
}{
if(key1 === 73 && key2 === 76) {
window.location = "http://www.google.com";
}
}
}
}
$(document).ready(main);
在每个键事件上,将当前键代码或键字符添加到字符串或数组中。测试字符串/数组的末尾是否有所需的输入序列。要么将字符串/序列截断到某个限制,要么在超时时清除它,这样它就不会失控。正如@Amadan所写的,您必须在数组中存储最后两个键的笔划,并将其与所需的序列进行比较。此外,@Boris Ivanov暗示说,最好检查一下按键之间的间隔 以下是实施:
var INTERVAL = 500; // max. interval between two last key strokes
var aKeys = []; // two last key strokes
var laststroke = 0; // timestamp of last key stroke
document.onkeydown = function(event){
var t = (new Date()).getTime(); // current timestamp
aKeys.push(event.keyCode);
aKeys = aKeys.slice(0,2); // truncate aKeys array to 2 elements
// compare aKeys with needed sequence and check interval between key strokes
if (aKeys.join(',') == '73,76' && t - laststroke < INTERVAL) {
window.location = "http://www.google.com";
}
laststroke = t;
}
不能在一个事件处理程序中同时执行两个测试。您需要测试一次,存储某种标志,然后再次测试第二个键。对于较长的序列,您可以考虑存储最后一个X键的数组,然后,在每个按键上,将数组与想要触发重定向的数组进行比较。序列应该有多快?在考虑它们序列的媒体之间,超时是什么?不确定如何存储一个标志。我更新了代码,但不起作用@BorisIvanov时间对我来说无关紧要。请改用Date.now。如果有嵌入空格,如果我添加了此选项,它还会工作吗?:函数removeSpacesaKeysaKeys不能包含空格,因为它的元素是数字