Навигация
Иногда требуется повесить действие в документе не на кнопку, а на ввод последовательности символов. Эта задача решается достаточно просто:
var buff = ""
,to = null;
document.body.parentNode.onkeypress = function (e) {
e = e||window.event;
if (to) {
// по таймауту очищается буфер ввода, так что его надо сбросить
// при нажатии на кнопку
clearTimeout(to);
to = null;
}
buff += String.fromCharCode(e.keyCode||e.charCode);
// проверяем совпадение строки в буфере с искомыми значениями
// другой вариант - более гибкий - формировать хэш соответствий
// строк функциям
switch (buff) {
case "hello" :
alert("hi there");
break;
case "bye" :
alert("see you");
break;
}
// запускаем выполнение очистки буфера по таймеру
// учтите, что неудачно подобранное время будет увеличивать
// количество ложных срабатываний
to = setTimeout(function(){
to = null;
buff = "";
},500);
}
Дискуссия