Показать сообщение отдельно
  #1 (permalink)  
Старый 25.11.2015, 02:58
Новичок на форуме
Отправить личное сообщение для Неумелый Посмотреть профиль Найти все сообщения от Неумелый
 
Регистрация: 25.11.2015
Сообщений: 3

Вызов события имитацией нажатия пробела
Доброго времени суток, друзья!

Прошу помощи. Третью ночь не сплю.
Этот код запускается в консоли хром на чужом сайте.

Цель: Замена данных input и имитация ввода с клавиатуры для вызова обработчика.

Описание: Меняю текст input обычным val(). После этого нужно имитировать нажатие пробела в input и тогда запрос отправляется обработчику. Нашел на хабре пост dom 2 events. Взял от туда код имитации нажатия клавиши пробела. Вставил, подключил, не работает. Надеюсь Вы увидите причину. Спасибо большое.

Код:
// Задаем input id = element_id и меняем его value на переменную deposit
var deposit = '177';
$('.amount-text').attr('id', 'element_id');
$('#element_id').val(deposit);
var element = document.getElementById('element_id');

// Далее совершаем клик по input (может и не требуется)
var o = document.createEvent('MouseEvents');
o.initEvent('click', true, true); // Используется унаследованный метод модуля Events, а не аналогичный модуля MouseEvents, объект которого был создан
element.dispatchEvent(o);

// Далее пытаемся поставить пробел в input (кажется именно здесь я сделал не так)
if( window.KeyEvent ) // Для FF
 {
  var o = document.createEvent('KeyEvents');
  o.initKeyEvent( 'keyup', true, true, window, false, false, false, false, 32, 0 );
} 
else // Для остальных браузеров
 {
  var o = document.createEvent('UIEvents');
  o.initUIEvent( 'keyup', true, true, window, 1 );
  o.keyCode = 32; // Указываем дополнительный параметр, так как initUIEvent его не принимает
}
element.dispatchEvent(o);

Последний раз редактировалось Неумелый, 25.11.2015 в 03:01.
Ответить с цитированием