Как заставить хром набрать ключ с помощью кода? - PullRequest
0 голосов
/ 08 июля 2019

[ПРИМЕЧАНИЕ]: я проверил SO ответы, которые могли бы сработать 5 лет назад и которые, похоже, не работают. Пожалуйста, не копируйте и не вставляйте этот мусор. спасибо.

Задача:

Возьмите строку, преобразуйте ее в последовательность нажатий клавиш, сделайте что-нибудь с этой последовательностью и в конечном итоге придете к выводу, что веб-страница, в которую вы хотите поместить эту строку, прошла через все, что ей нужно пройти, как если бы строковые символы были последовательно нажимается человеком через клавиатуру.

Вопрос:

Как, черт возьми, это сделано?

element.value = 'test123' // BAD EXAMPLE

если вы не знаете, почему это плохой пример, не отвечайте на этот вопрос.

element.dispatchEvent(/*event for keydown*/)
element.dispatchEvent(/*event for textInput*/)
element.dispatchEvent(/*event for keyup*/)

^ это ... технически это должно работать, но я не нашел рабочего примера.

Кроме того, по-видимому, могут быть некоторые проблемы с event.isTrusted, которые я не знаю, как обойти.

... возможно я не использую нужные инструменты ...

chrome.input.ime ... похоже, это связано с chromiumOS, и хром не реагирует на него. (по крайней мере, к тому, что я написал (я использую Windows))

может быть chrome.debugger .... ??? хотя я не могу понять, как передать событие клавиатуры элементу через этот API

TL / DR

Пожалуйста, опубликуйте правильный пример (который работает за пределами element.onkeydown (***)); что приводит к тому, что нажатие клавиши регистрируется веб-страницей, как если бы она исходила от клавиатуры (или ОС), хотя на самом деле это от javascript.

1 Ответ

0 голосов
/ 08 июля 2019

С здесь:

jQuery имеет метод .keypress, не принимающий аргументов, имитирующих нажатие клавиши.

$("#target").keypress();

Запустит нажатие клавиши на #target

Если вы также хотите выбрать, какая клавиша была нажата, вы можете использовать .trigger. Этот пример взят из документов :

var e = $.Event("keydown", { keyCode: 8}); //"keydown" if that's what you're doing
$("body").trigger(e);

Код клавиши 8 - это код клавиши для возврата на в JavaScript.

Дайте мне знать, как это работает для вас:)

...