Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   програмное нажатие (https://javascript.ru/forum/events/42775-programnoe-nazhatie.html)

dimann889s 09.11.2013 00:17

програмное нажатие
 
есть ли в JS функция програмно нажать клавишу, не мышь , а именно клавишу, например 'A' .

cyber 09.11.2013 02:09

dimann889s, нет.

danik.js 09.11.2013 07:15

Да, element.dispatchEvent()
Вот только действия браузера на это событие не будет (не появится символ в поле ввода например).

BETEPAH 09.11.2013 12:23

Цитата:

Сообщение от dimann889s
есть ли в JS функция програмно нажать клавишу, не мышь , а именно клавишу, например 'A' .

А для чего это нужно в браузере? Люди на нажатия вешают обработчики, а вы хотите скриптом эмулировать нажатие клавиши, чтоб потом его обрабатывать (внимание!) скриптом? Мне кажется что-то в этой цепочке действий лишнее.

cyber 09.11.2013 13:57

Цитата:

Сообщение от danik.js
Да, element.dispatchEvent()
Вот только действия браузера на это событие не будет (не появится символ в поле ввода например).
__________________

а смысел тогда от этого события, почему то мне кажется ТС хотел функцию которая символы сможет вводить, или что то такое..

dimann889s 09.11.2013 14:12

пнт, да хотел программно ввести в textarea текст, через
document.getElementById('text_area_id').value = 'trololo'

при нажатии на "отправить" value возвращается в предыдущее состояние, какая то защита? (сайт https://adwords.google.com/ko/Keywor...__c=1905831611)

Незнаю как обойти эту защиту, пробовал
for(var j = 0; j < wordsArr[i].length; j++){
			setTimeout(document.getElementById('gwt-debug-keywords-text-area').value += wordsArr[i].charAt(j), 3000);
		}

где wordArr это массив из заданных слов (продуктов , услуг)
тоже не канает, решаю задачку

Цитата:

1) Зайдите на https://adwords.google.com/ko/KeywordPlanner/Home От вас может потребоваться авторизация (если вы еще не залогинены в Гугл).
============ ШАГ 1 ===================
2) Кликнете на ссылку "Найти варианты ключевых слов и групп объявлений"
3) Внесите в поле "Ваш продукт или услуга" тестовый запрос №1
4) Кликните на кнопку "Получить варианты"
5) После загрузки результатов кликните на закладке "Варианты ключевых слов" и дождитесь загрузки результатов.
============ ШАГ 2 ===================
6) Внесите в поле "Ваш продукт или услуга" другой тестовый запрос
7) Кликните на кнопку "Получить варианты"
8) Дождитесь загрузки результатов и повторите ШАГ2

От вас требуется сделать скрипт который бы проходил ШАГ1 один раз, а ШАГ2 многократно, по числу элементов массива переданного функции выполняющей ШАГ2.

BETEPAH 09.11.2013 16:28

Цитата:

Сообщение от dimann889s
при нажатии на "отправить" value возвращается в предыдущее состояние, какая то защита?

при чем здесь защита? Нажали на "отправить" - данные отправились, страница перезагрузилась.
wordsArr[i].length - чему равно?
setTimeout - зачем?

Это какой-то юзерскрипт планируется?

dimann889s 09.11.2013 17:00

BETEPAH, да, чтобы в цикле отправлялось поле textarea с со значениями из words
, например var words = ['цветы', 'машины', 'книги', 'параболические антенны' ];
страница не перезагружается при отправке, все делается через аякс (это на их части мне же надо просто получить ответ по заданным словам из массива в цикле)

setTimeout() использовал тк как вначале предполагал что так можно обойти ограничение, при установке document.getElementById('gwt-debug-keywords-text-area').value = 'какой то элемент из массива' при клике document.getElementById('gwt-debug-search-button-content').click()

document.getElementById('gwt-debug-keywords-text-area').value устанавливалось в первоначальное значение, которое я вбил руками(в первый раз надо ручками сделать шаг 1 , а то value для текстареа вообще не ставится)

nikolya223 10.11.2013 12:34

А вы как через консоль пробуете? случайно не гугл хрома....
что то мне подсказывает, что там профиксено всё ))) - попробуйте даже вручную поменять в textarea внутреннюю часть, через инструменты разработчика - ноль эффекта

попробуйте через оперу
Ещё лучше - для таких целей (если это не против правил, а для упрощения своей работы) лучше написать какого нибудь макросного бота или есть хорошие программы с умными макросами - для которых это раз плюнуть) но моё мнение - с гуглом так шутить лучше не надо

danik.js 10.11.2013 13:47

Цитата:

Сообщение от nikolya223
попробуйте даже вручную поменять в textarea внутреннюю часть, через инструменты разработчика - ноль эффекта

То есть изменить innerHTML? Так от этого не должно быть эффекта. innerHTML для textarea задает только начальное значение. Далее значение хранится в свойстве (не атрибуте!!) .value , вот его и нужно менять.


Часовой пояс GMT +3, время: 19:14.