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

Как имитировать ввод текста в поле ввода с помощью jQuery?

Я хочу, чтобы симулировать ввод текста в поле <input> с помощью javascript.

У меня есть следующий код:

var press = jQuery.Event("keydown");
press.ctrlKey = false;
press.which = 65;
$("#test").trigger(press);

Но когда я загружаю страницу, поле ввода #test не имеет введенных символов, код ключа "65" означает "A", но вход "A" отсутствует.

В основном я хочу автоматически печатать на веб-сайте с помощью Greasemonkey.

Пожалуйста, дайте мне несколько идей или какую-то библиотеку, с которой я могу это сделать.
Большое спасибо!

4b9b3361

Ответ 1

Вы можете отправлять ключевые события, и все, что их прослушивает, получит их, , но они не изменят ввод, поэтому вы не увидите, например, письмо A. Это в основном безопасность; см. "События для ручного запуска" для обсуждения этого вопроса.

Итак, если вы хотите, чтобы письмо появлялось, вы должны изменить входное значение при отправке события ключа. Для этого есть плагин jQuery, см. Плагин $.fn.sendkeys.

Вы можете видеть, как <input> реагирует на пользовательские клавиши, ключевые события и этот плагин на this jsFiddle.

Для справки, это ключевая часть кода из этого jsFiddle:

$("button").click ( function (zEvent) {
    if (zEvent.target.id == "simA_plain") {
        console.log ("Send Plain key event");
        var keyVal = 65;
        $("#eventTarg").trigger ( {
            type: 'keypress', keyCode: keyVal, which: keyVal, charCode: keyVal
        } );
    }
    else {
        console.log ("Use the Plugin to simulate a keystroke");
        $("#eventTarg").sendkeys ("B") ;
    }
} );


Этот плагин должен быть достаточным, если вы просто пытаетесь "имитировать ввод текста на <input>". Однако, в зависимости от того, что вы действительно пытаетесь сделать, вам может потребоваться выполнить одно или несколько из следующих действий:

  • Просто установите текст так, как вы хотите.
  • Отправьте событие keydown, если JavaScript-код страницы отключен от него.
  • Аналогично, отправьте событие change и т.д., если JavaScript-код страницы отключен от него.
  • Просто найдите и вызовите страницу javascript напрямую. Для этого используйте script инъекции, взлома местоположения, unsafeWindow и/или @grant none.
  • Что-то еще? Укажите свою истинную цель и ссылку на целевую страницу.