Подтвердить что ты не робот

Как я могу имитировать нажатия клавиш в 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.

4b9b3361

Ответ 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 программно не имеет никакого эффекта прокрутки. Вышеприведенный образец может быть настроен для добавления анимаций.