Имитация нажатия по клавиатуре
Имитация нажатия по клавиатуре
Друзья, помогите разобраться с кодам.
Нужно имитировать нажатие по клавиатуре - на подобие click
Например, чтобы имитировать нажатие на клавишу "D" нужно:
1)Отправить событие keydown D
2)Отправить событие keypress D
3)Отправить событие keyup D
Я пробовал так писать:
var cmdname="event"; //команда отправить событие
var cmdtime=1;//выполнение 1 секунда.
var cmdparam="keydown.'D'.charCodeAt (0)"; //??? не знаю что написать
alert("prs::" + prskey + "::add::cmdname::cmdtime::cmdparam");
var cmdname="event"; //команда отправить событие
var cmdtime=1;//выполнение 1 секунда.
var cmdparam="keydpress.'D'.charCodeAt (0)"; //??? не знаю что написать
alert("prs::" + prskey + "::add::cmdname::cmdtime::cmdparam");
var cmdname="event"; //команда отправить событие
var cmdtime=1;//выполнение 1 секунда.
var cmdparam="keyup.'D'.charCodeAt (0)"; //??? не знаю что написать
alert("prs::" + prskey + "::add::cmdname::cmdtime::cmdparam");
Погуглив видел такой код javascript. Но мне не нужно указывать объект, куда вставлять, а просто имитация нажатия по клавиатуре:
<body>
<input id="tst" autocomplete="off">
<script>
onload = function ()
{
var evnt = document.createEvent ('KeyboardEvent');
var cd = 'D'.charCodeAt (0);
var obj = document.getElementById ('tst');
obj.focus ();
evnt.initKeyEvent ('keydown', 1, 1, window, 0, 0, 0, 0, cd, cd); obj.dispatchEvent (evnt);
evnt.initKeyEvent ('keypress', 1, 1, window, 0, 0, 0, 0, cd, cd); obj.dispatchEvent (evnt);
evnt.initKeyEvent ('keyup', 1, 1, window, 0, 0, 0, 0, cd, cd); obj.dispatchEvent (evnt);
}
</script>
</body>
Какой cmdparam - тут можно ?
Нужно имитировать нажатие по клавиатуре - на подобие click
Например, чтобы имитировать нажатие на клавишу "D" нужно:
1)Отправить событие keydown D
2)Отправить событие keypress D
3)Отправить событие keyup D
Я пробовал так писать:
var cmdname="event"; //команда отправить событие
var cmdtime=1;//выполнение 1 секунда.
var cmdparam="keydown.'D'.charCodeAt (0)"; //??? не знаю что написать
alert("prs::" + prskey + "::add::cmdname::cmdtime::cmdparam");
var cmdname="event"; //команда отправить событие
var cmdtime=1;//выполнение 1 секунда.
var cmdparam="keydpress.'D'.charCodeAt (0)"; //??? не знаю что написать
alert("prs::" + prskey + "::add::cmdname::cmdtime::cmdparam");
var cmdname="event"; //команда отправить событие
var cmdtime=1;//выполнение 1 секунда.
var cmdparam="keyup.'D'.charCodeAt (0)"; //??? не знаю что написать
alert("prs::" + prskey + "::add::cmdname::cmdtime::cmdparam");
Погуглив видел такой код javascript. Но мне не нужно указывать объект, куда вставлять, а просто имитация нажатия по клавиатуре:
<body>
<input id="tst" autocomplete="off">
<script>
onload = function ()
{
var evnt = document.createEvent ('KeyboardEvent');
var cd = 'D'.charCodeAt (0);
var obj = document.getElementById ('tst');
obj.focus ();
evnt.initKeyEvent ('keydown', 1, 1, window, 0, 0, 0, 0, cd, cd); obj.dispatchEvent (evnt);
evnt.initKeyEvent ('keypress', 1, 1, window, 0, 0, 0, 0, cd, cd); obj.dispatchEvent (evnt);
evnt.initKeyEvent ('keyup', 1, 1, window, 0, 0, 0, 0, cd, cd); obj.dispatchEvent (evnt);
}
</script>
</body>
Какой cmdparam - тут можно ?
Re: Имитация нажатия по клавиатуре
Пример через jQuery.
Для теста использовал:
http://www.asquare.net/javascript/tests/KeyCode.html
Вставить скрипт 10с
Вставить скрипт одной строкой:
Для теста использовал:
http://www.asquare.net/javascript/tests/KeyCode.html
Вставить скрипт 10с
Код: Выделить всё
function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url;s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',function(){});
Код: Выделить всё
var event = jQuery.Event('keypress');
event.which = 49;
event.charCode = 49;
event.keyCode = 49;
jQuery('#input').trigger(event);
Re: Имитация нажатия по клавиатуре
Спасибо за ответ, но там только в индикаторах появляются данные '49', а в самом окне не появляется значение '1'?
А как имитировать нажатие клавиши на клавиатуре? Например - вконтакте набрать логин и пароль?
А как имитировать нажатие клавиши на клавиатуре? Например - вконтакте набрать логин и пароль?
Re: Имитация нажатия по клавиатуре
Вы пишите по конкретной ситуации. Можно даже по ссылке Live-чат консультанта. Объясню на конкретных примерах с примерами кода.kadrle писал(а):Спасибо за ответ, но там только в индикаторах появляются данные '49', а в самом окне не появляется значение '1'?
А как имитировать нажатие клавиши на клавиатуре? Например - вконтакте набрать логин и пароль?
Re: Имитация нажатия по клавиатуре
Я сделал так:
Адрес сайта: http://www.asquare.net/javascript/tests/KeyCode.html
Время показа: 30-30 сек.
10сек : Вставить скрипт: function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url;s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jq ... ',function(){});
1 сек : Вставить скрипт: var event = jQuery.Event('keydown'); event.which = 49; event.charCode = 0; event.keyCode = 49; jQuery('#input').trigger(event);
1 сек : Вставить скрипт: var event = jQuery.Event('keypress'); event.which = 49; event.charCode = 49; event.keyCode = 0; jQuery('#input').trigger(event);
1 сек : Вставить скрипт: var event = jQuery.Event('keyup'); event.which = 49; event.charCode = 0; event.keyCode = 49; jQuery('#input').trigger(event);
15сек : Поиск ссылки : last;0
По идее в INPUTE должно было появиться "1", т.к. при нажатии "1" - возникают соответствующие коды.
Но цифра 1 не появляется.
И кстати, почему через файл java script не работает?
var cmdname="script";
var cmdtime=10;
var cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url;s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jq ... ',function(){});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);
var cmdname="script";
var cmdtime=1;
var cmdparam="var event = jQuery.Event('keydown'); event.which = 49; event.charCode = 0; event.keyCode = 49; jQuery('#input').trigger(event);";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);
var cmdname="script";
var cmdtime=1;
var cmdparam="var event = jQuery.Event('keypress'); event.which = 49; event.charCode = 49; event.keyCode = 0; jQuery('#input').trigger(event);";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);
var cmdname="script";
var cmdtime=1;
var cmdparam="var event = jQuery.Event('keyup'); event.which = 49; event.charCode = 0; event.keyCode = 49; jQuery('#input').trigger(event);";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);
var cmdname="link";
var cmdtime=15;
var cmdparam="last;0";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);
Адрес сайта: http://www.asquare.net/javascript/tests/KeyCode.html
Время показа: 30-30 сек.
10сек : Вставить скрипт: function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url;s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jq ... ',function(){});
1 сек : Вставить скрипт: var event = jQuery.Event('keydown'); event.which = 49; event.charCode = 0; event.keyCode = 49; jQuery('#input').trigger(event);
1 сек : Вставить скрипт: var event = jQuery.Event('keypress'); event.which = 49; event.charCode = 49; event.keyCode = 0; jQuery('#input').trigger(event);
1 сек : Вставить скрипт: var event = jQuery.Event('keyup'); event.which = 49; event.charCode = 0; event.keyCode = 49; jQuery('#input').trigger(event);
15сек : Поиск ссылки : last;0
По идее в INPUTE должно было появиться "1", т.к. при нажатии "1" - возникают соответствующие коды.
Но цифра 1 не появляется.
И кстати, почему через файл java script не работает?
var cmdname="script";
var cmdtime=10;
var cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url;s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jq ... ',function(){});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);
var cmdname="script";
var cmdtime=1;
var cmdparam="var event = jQuery.Event('keydown'); event.which = 49; event.charCode = 0; event.keyCode = 49; jQuery('#input').trigger(event);";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);
var cmdname="script";
var cmdtime=1;
var cmdparam="var event = jQuery.Event('keypress'); event.which = 49; event.charCode = 49; event.keyCode = 0; jQuery('#input').trigger(event);";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);
var cmdname="script";
var cmdtime=1;
var cmdparam="var event = jQuery.Event('keyup'); event.which = 49; event.charCode = 0; event.keyCode = 49; jQuery('#input').trigger(event);";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);
var cmdname="link";
var cmdtime=15;
var cmdparam="last;0";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);
Re: Имитация нажатия по клавиатуре
Здравствуйте. На самом деле у меня такая вот проблема, я не могу набирать логин и пароли вконтакте. Клики работают, а вот действия клавиатуры - нет. Изучая код - я понял что там следят за OnKeyUp.
Другой системой скриптов - все работает - набирает.
А вот javascript jetswap - не получается. Я заскринил часть кода другой системы. Еще в Dos программах QBasic - можно было смещать машинные кода Peek Poke -
как это реализовать здесь - желательно на стороннем файле?
Re: Имитация нажатия по клавиатуре
Код: Выделить всё
Вставить скрипт 5с:
$('#index_email').value = 'test@mail.ru'; $('#index_pass').value = 'test@mail.ru';
Отправить событие 30с:
button;id;index_login_button;click;0
Re: Имитация нажатия по клавиатуре
К сожалению не получилось.
Да, я настроил так, как вы написали.
Но у меня выдалась ошибка. Видимо у них иные операторы javascript.
Да и #index_email - временами у них разный. Но тем не менее, движение и клик мышки там работает.
Осталось симулировать имитацию нажатия клавиш - keydown a; keyup a;
Это и надежнее и точно работает, проверял в другой системе.
Только как здесь прописать?
12.11.2016 10:32:13 Ошибка JavaScript: вкладка 1; номер ошибки 0; файл about:blank; строка 0; символ 0; ошибка NS_ERROR_NOT_AVAILABLE:
12.11.2016 10:32:14 Переход: http://vk.com
12.11.2016 10:32:16 Ошибка JavaScript: вкладка 1; номер ошибки 1; файл https://vk.com/js/lib/ui_controls.js?3165552795; строка 3; символ 0; ошибка jsDispatcher is not defined
12.11.2016 10:32:19 Ошибка JavaScript: вкладка 1; номер ошибки 228; файл https://connect.facebook.net/en_US/all.js; строка 31; символ 0; ошибка JSON.parse: bad control character in string literal at line 1 column 2 of the JSON data
12.11.2016 10:32:19 Ошибка JavaScript: вкладка 1; номер ошибки 228; файл https://connect.facebook.net/en_US/all.js; строка 31; символ 0; ошибка JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 2 of the JSON data
12.11.2016 10:34:05 Команда 1: Вставка JavaScript. Скрипт alert("prs::" + prskey + "::agent::Opera/9.80 (Windows NT 6.1; WOW64; MRA 8.2 (build 2201)) Presto/2.12.328 Version/13.12);
12.11.2016 10:34:05 Ошибка JavaScript: вкладка 1; номер ошибки 138; файл https://vk.com/; строка 0; символ 25; ошибка SyntaxError: unterminated string literal
12.11.2016 10:34:05 Команда 2: Вставка JavaScript. Скрипт $('#index_email').value = 'loginus@yandex.ru'; $('#index_pass').value = 'passwordus';
12.11.2016 10:34:05 Ошибка JavaScript: вкладка 1; номер ошибки 1; файл https://vk.com/; строка 0; символ 0; ошибка $ is not defined
12.11.2016 10:34:05 Ошибка JavaScript: вкладка 1; номер ошибки 1; файл https://vk.com/; строка 0; символ 0; ошибка ReferenceError: $ is not defined
Да, я настроил так, как вы написали.
Но у меня выдалась ошибка. Видимо у них иные операторы javascript.
Да и #index_email - временами у них разный. Но тем не менее, движение и клик мышки там работает.
Осталось симулировать имитацию нажатия клавиш - keydown a; keyup a;
Это и надежнее и точно работает, проверял в другой системе.
Только как здесь прописать?
12.11.2016 10:32:13 Ошибка JavaScript: вкладка 1; номер ошибки 0; файл about:blank; строка 0; символ 0; ошибка NS_ERROR_NOT_AVAILABLE:
12.11.2016 10:32:14 Переход: http://vk.com
12.11.2016 10:32:16 Ошибка JavaScript: вкладка 1; номер ошибки 1; файл https://vk.com/js/lib/ui_controls.js?3165552795; строка 3; символ 0; ошибка jsDispatcher is not defined
12.11.2016 10:32:19 Ошибка JavaScript: вкладка 1; номер ошибки 228; файл https://connect.facebook.net/en_US/all.js; строка 31; символ 0; ошибка JSON.parse: bad control character in string literal at line 1 column 2 of the JSON data
12.11.2016 10:32:19 Ошибка JavaScript: вкладка 1; номер ошибки 228; файл https://connect.facebook.net/en_US/all.js; строка 31; символ 0; ошибка JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 2 of the JSON data
12.11.2016 10:34:05 Команда 1: Вставка JavaScript. Скрипт alert("prs::" + prskey + "::agent::Opera/9.80 (Windows NT 6.1; WOW64; MRA 8.2 (build 2201)) Presto/2.12.328 Version/13.12);
12.11.2016 10:34:05 Ошибка JavaScript: вкладка 1; номер ошибки 138; файл https://vk.com/; строка 0; символ 25; ошибка SyntaxError: unterminated string literal
12.11.2016 10:34:05 Команда 2: Вставка JavaScript. Скрипт $('#index_email').value = 'loginus@yandex.ru'; $('#index_pass').value = 'passwordus';
12.11.2016 10:34:05 Ошибка JavaScript: вкладка 1; номер ошибки 1; файл https://vk.com/; строка 0; символ 0; ошибка $ is not defined
12.11.2016 10:34:05 Ошибка JavaScript: вкладка 1; номер ошибки 1; файл https://vk.com/; строка 0; символ 0; ошибка ReferenceError: $ is not defined
- PsyVorteX91
- Сообщения: 86
- Зарегистрирован: 06 янв 2012, 01:32
- Откуда: Крым
- Контактная информация:
Re: Имитация нажатия по клавиатуре
Отправка событий с методами keypress, keydown, keyup выполняет ровно программное предназначение и не означает что будут выполнены фактические действия! Только при условии наличия обработчика данного события на выбранном элементе в структуре HTML выполнятся действия согласно записанной функции!kadrle писал(а):Спасибо за ответ, но там только в индикаторах появляются данные '49', а в самом окне не появляется значение '1'?
А как имитировать нажатие клавиши на клавиатуре? Например - вконтакте набрать логин и пароль?
Другими словами - отследить событие можно, но фактически внести коррективы то есть лицезреть как кнопка на клавиатуре проседает и магическим образом в поле появляется "буква\символ\цифра" нельзя из-за политики безопасности!
Поэтому при реализации банально записываются данные в структуру HTML . На JQ например: $('#ID').val('значение'); - запись значения в поле с указанным ID.
И как следствие ввести скажем так "побуквенно" возможно , но реализация будет совершенно другой.
Как пример.. C использованием интервала , счётчика и добавления, в каждой итерации, в значение атрибута value (букву\цифру\символ) длинной в единицу.
Re: Имитация нажатия по клавиатуре
PsyVorteX91, забыл указать про триггер, который нужен порой. change, keydown или какой-либо еще (: