Как я могу имитировать нажатия клавиш в JavaScript?
Я пытаюсь найти способ имитации нажатия клавиш.
Например, при запуске функции следует нажать клавишу "Стрелка вниз", чтобы веб-страница была слегка прокручена.
Меня интересует только Chrome, и jQuery или простой JS будут подходящими. (Plain JS будет более предпочтительным).
Вот один из примеров кода, которые я пробовал:
var e = $.Event("keydown", { keyCode: 40}); // 40 = down arrow
$("body").trigger(e);
// When I launch it the console, nothing happens. The page is not scrolled.
// May be I missed some obvious?
Я искал и нашел следующие связанные вопросы, но решения не сработали для меня:
Другими словами
Используя AutoHotkey, вы можете легко сделать что-то вроде:
Down::
Send, {Up}
Затем, если вы нажмете клавишу со стрелкой Down
, она будет запущена Up
. Я просто хочу реализовать его с помощью JS.
Ответы
Ответ 1
Как @rfsbsb указал из: JQuery script для имитированного нажатия клавиши, не запуская сочетания клавиш
Если вы пытаетесь запустить некоторые сочетания клавиш браузера или системной клавиатуры то это тупик - это невозможно сделать по соображениям безопасности. Если оно было бы возможно, у вас были бы страницы по всему Интернету, которые (например) добавьте себя в свои закладки, даже не спросив (с помощью стрелки CTRL + B с помощью Javascript).
Ответ 2
Используя этот ответ, мне удалось немного изменить код, и я думаю, что получил то, что вы ищете?
вот мой jsfiddle
код:
jQuery(document).ready(function($) {
$('body').keypress(function(e) {
if(e.which == '40')
$('body').animate({scrollTop: '100px'});
});
});
jQuery.fn.simulateKeyPress = function(character) {
jQuery(this).trigger({
type: 'keypress',
which: character
});
};
setTimeout(function() {
$('body').simulateKeyPress(40);
}, 1000);
Ответ 3
Вот пример, начинающийся с примера @Haring10:
https://jsfiddle.net/po33vfb4/4/
$('body').keydown(function(e) {
e.preventDefault();
e.stopImmediatePropagation();
if(e.which == 40) {
window.scrollBy(0, -100);
} else {
window.scrollBy(0, 100);
}
});
Запуск keydown-keyup-keypress программно не имеет никакого эффекта прокрутки. Вышеприведенный образец может быть настроен для добавления анимаций.