Javascript.RU

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

Эмулировать событие event
Всем доброго времени суток ув. Форумчене
Впервые на Вашем форуме, прошу камнями не кидать, если что не так
Нужна ваша помощь в следующем
На странице ВК есть поле для вставки текста:
<textarea id="post_field" class="fl_l" onkeyup="Wall.postChanged()" onkeydown="onCtrlEnter(event, Wall.sendPost)" onfocus="Wall.showEditPost()" style="width: 369px; padding-right: 3px; overflow: hidden; resize: none; height: 11px;"></textarea>

Пишу скрипт на Autoit, который будет заполнять это поле:
Код:
$oIE = _IECreate ("http://vk.com/club46162850") ;<=== Создаем новую страницу IE и записываем Obj в переменную $oIE 
$oPost = _IEGetObjById ($oIE,"post_field") ;<=== получаем Obj по ID "post_field"
_IEAction ($oPost,"focus") ;<==== Устанавливаем фокус на обьекте
_IEFormElementSetValue($oPost, "http://autoit-script.ru/") ;<==== устанавливаем новое значение
Так вот, заполнение как бы происходит, и даже можно нажать кнопочку отправить... Но, если это делать ручками а не через скрипт, то ВК открывает дополнительно окошко, в котором появляется ссылка на сайт с картинкой.
Предпологаю, что происходит так, из за обработчиков "onkeydown" и "onkeyup", ведь скрипт не сообщает что кнопки физически нажимались.

Вопрос, что передает Event "onkeydown" в функцию onCtrlEnter(event, Wall.sendPost), предпологаю, что key.code нажатой клавиши. И как эмулировать, заставить поверить страницу в том, что клавиша действительно была нажата. Достаточно одной клавиши {SPACE}. Подскажите пожалуйста, как это работает???
Ответить с цитированием
  #2 (permalink)  
Старый 29.11.2014, 17:20
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Не знаю насчет IE (кстати, какой версии?), но в FF можно так:

var event = new KeyboardEvent('keydown', {keyCode: 0x20});
element.dispatchEvent(event);
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 29.11.2014, 17:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Посмотри сначала на странице какое событие прослушивается. Посмотреть можно в DevTools хрома.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 29.11.2014, 17:40
Новичок на форуме
Отправить личное сообщение для JIereHga2014 Посмотреть профиль Найти все сообщения от JIereHga2014
 
Регистрация: 29.11.2014
Сообщений: 3

danik.js
Цитата:
Посмотри сначала на странице какое событие прослушивается. Посмотреть можно в DevTools хрома.
Подскажите пожалуйста, Вы это имеете ввиду??
Если да, помогите разобраться что тут к чему...
Цитата:
var event = new KeyboardEvent('keydown', {keyCode: 0x20});
element.dispatchEvent(event);
А вот это я отправил через js консоль и получил ответ:
var event = new KeyboardEvent('keydown', {keyCode: 0x20});
undefined
element.dispatchEvent(event);
VM1947:2 Uncaught ReferenceError: element is not definedmessage: "element is not defined"stack: (...)get stack: function () { [native code] }set stack: function () { [native code] }__proto__: ErrorVM1947:2 (anonymous function)VM1530:762 InjectedScript._evaluateOnVM1530:695 InjectedScript._evaluateAndWrapVM1530:609 InjectedScript.evaluate

Или я не так отправил??
Ответить с цитированием
  #5 (permalink)  
Старый 29.11.2014, 17:49
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от JIereHga2014
, Вы это имеете ввиду??
Да, хотя в FF не проверял.
Сообщение от JIereHga2014
Или я не так отправил??
В element запиши свое поле ввода.

Кстати после фокуса оно становится активным элементом документа, то есть:
document.activeElement.dispatchEvent(...)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 29.11.2014, 18:16
Новичок на форуме
Отправить личное сообщение для JIereHga2014 Посмотреть профиль Найти все сообщения от JIereHga2014
 
Регистрация: 29.11.2014
Сообщений: 3

Отправил:
var event = new KeyboardEvent('keydown', {keyCode: 0x20});
document.activeElement.dispatchEvent(event);

Получил:
true

Но изменений никаких не произошло
Ответить с цитированием
  #7 (permalink)  
Старый 30.11.2014, 04:52
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Значит скрипт не реагирует на keydown. Возможно на input или на keypress среагирует. Можешь поизучать код скрипта.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как создать event, эмулирующий enter Artanis Events/DOM/Window 7 16.07.2019 06:40
Событие на input radio redwert Элементы интерфейса 3 23.09.2014 09:45
Событие event в FireFox yambbkru Firefox/Mozilla 2 12.02.2013 18:19
event + setTimeout fsingle Events/DOM/Window 2 02.05.2012 09:07
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 11:46