2013-11-23 3 views
0

Я пытаюсь имитировать пользовательский ввод в браузере с помощью JavaScript. События кликов создаются и отправляются успешно, но по некоторым причинам аналогичный код для событий на клавиатуре не работает вообще.Диспетчерское событие клавиатуры не работает в JavaScript

var event = document.createEvent("KeyboardEvent"); event.initKeyEvent("keydown", true, true, window, false, false, false, false, 87, 0); document.getElementById("id").dispatchEvent(event);

Это возвращает истину, но соответствующий символ не появится в поле ввода. Я также пробовал использовать keypress и keyup, которые тоже не работают (протестированы против FF и Chrome). Это запрещено браузером по некоторым причинам безопасности, или я делаю что-то неправильно? Есть ли обходной путь, чтобы заставить его работать?

ответ

1

Событие отправляет сообщения в порядке, и все слушатели событий будут стрелять, то, что не происходит, персонаж не получает «набранный». Это связано с тем, что происхождение события происходит не от правильного источника. Это «функция безопасности».

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

+0

Вы были правы, обработчик события «keypress» на самом деле вызван, когда я отправляю событие программно. Я не понимаю, почему это считается угрозой безопасности? Я всегда могу поместить некоторые данные в поле значений соответствующего ввода и даже отправить форму с этими данными. Какой вопрос он решает? –

 Смежные вопросы

  • Нет связанных вопросов^_^