Javascript序列的键重定向功能

时间:2014-10-07 07:42:28

标签: javascript

我正在尝试创建一个函数,如果按下特定的键序列,则会产生重定向功能。我知道如何只做一个角色,但不知道如何在一系列角色之后重定向。到目前为止,这是代码:

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 = function(key){reactKey(key); }

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

2 个答案:

答案 0 :(得分:0)

在每个键事件上,将当前键代码或键字符添加到字符串或数组中。测试字符串/数组的结尾以获得所需的输入序列。要么将字符串/序列截断到某个限制,要么在超时时清除它,这样就不会失控。

答案 1 :(得分:0)

正如@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;
}