Можно ли в JavaScript создавать ярлыки с последовательностью, как 123,345 вместо комбо?
Я уже использовал некоторый скрипт для реализации ярлыков на моей веб-странице
но мне было интересно, можно ли связать какую-то комбинацию не синхронно, например Ctrl+X, а скорее как последовательность, набирающую 1..2..3 или любую другую комбинацию для выполнения скрипта...
давайте предположим этот пример:
у вас длинный список с номерами:
Вы можете набрать 3..5...6, чтобы перейти к пункту 356, проходя через пункт 3, затем 35, затем 356.
более или менее, как при вводе при выборе поля выбора
Я надеюсь, что это было ясно, это не легко объяснить...
6 ответов
Я на самом деле нашел отличный скрипт для регистрации последовательности нажатий клавиш, который
http://boedesign.com/demos/keystrokes/
единственная проблема с этим скриптом в том, что в случае ввода
"мужчина" или "манера", он срабатывает на "человека", потому что это она самая короткая последовательность... этот сценарий может нуждаться в таймере...
Я также думаю, что решение этой проблемы может быть в совершенно другом подходе с использованием сценария автозаполнения в невидимом поле ввода... что вы думаете?
Я думаю, что понимаю ваш вопрос. Это не должно быть слишком сложно. Я бы порекомендовал использовать такую библиотеку, как JQuery, и подписываться на keydown даже в окне браузера. Затем создайте буфер из 5 самых последних нажатых клавиш, после каждого нажатия на клавиатуру проверяйте, соответствуют ли 3 последние нажатые клавиши какой-либо сохраненной последовательности. Вы также можете легко отметить время каждого события нажатия клавиши и потребовать, чтобы все клавиши были нажаты в течение определенного промежутка времени друг для друга, чтобы вызвать ярлык.
Рекомендация: создайте текстовый ввод, затем подключите событие onchange. Когда значение в поле изменится, перейдите к соответствующему месту на странице. Использовать CSS position:fixed
чтобы сохранить ввод в нужном месте.
Пример страницы HTML:
<p id="3">
This is paragraph 3.
</p>
...
<p id="35">
This is paragraph 35.
</p>
...
<p id="356">
This is paragraph 356
</p>
Пример HTML для поля навигации:
<div class="navigate">
<p>Go to: <input type="text" id="navbox" /></p>
</div>
CSS, чтобы поместить его в верхний правый угол экрана:
.navigate {
position: fixed;
top: 0px;
right: 0px;
}
JavaScript для выполнения навигации:
(function(){
var navbox = document.getElementById("navbox");
navbox.onchange = function(){
var value = navbox.value;
if (document.getElementById(value)) {
window.location.assign("#" + value);
}
};
})();
Надеюсь это поможет!
Да, есть много структур JavaScript, которые позволяют вам это делать. Например, проверьте эту демонстрацию автозаполнения JQuery
Надеюсь, поможет;)
Относительно "сочетаний клавиш": это хороший скрипт, который обрабатывает сочетания клавиш, но НЕ последовательности (модификаторы, такие как CTRL, SHIFT, работают).
Если вы хотите, чтобы последовательность клавиш была обработана как "один ярлык", я думаю, вам нужно написать собственный скрипт. Текущие библиотеки не поддерживают это.
Вам нужно получить все входные данные в течение короткого промежутка времени (сброс после каждого нажатия). Когда таймер заканчивается, вы проверяете последовательность клавиш, которая была введена по вашему списку ярлыков.
Я думаю, что вам может понравиться этот, где 'typeahead' находит место..