Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Скрипт выбора radiobutton и клик по кнопке (Greasemonkey) (https://javascript.ru/forum/css-html-firefox-mizilla/81701-skript-vybora-radiobutton-i-klik-po-knopke-greasemonkey.html)

The_Immortal 15.01.2021 01:52

Скрипт выбора radiobutton и клик по кнопке (Greasemonkey)
 
Всех приветствую!

Прошу простить, если пишу не тут, просто не нашёл более подходящего форума для данного вопроса...

Пытаюсь написать Greasemonkey-скрипт, который должен ставить true для определенного radiobutton'а и далее кликать по определенной кнопке (хотя она на странице единственная). После успешной операции открывается другая страница, после чего надо вернуться на предыдущую и всё заново повторить (выбрать нужное "радио" и кликнуть по кнопке) - т.е. организовать цикл.

До возврата на предыдущую страницу и цикл я пока не дошёл, т.к. банально не могу выбрать "радио" и кликнуть по кнопке.
<input type="radio" name="thisradio" value="123">
<input type="submit" onclick="send(); return false;" value="Запустить">


Мои попытки:
// ==UserScript==
// @name     Скрипт БезИмени 648414
// @version  1
// @grant       GM_openInTab
// @grant       unsafeWindow
// @run-at      document-start
// ==/UserScript==

waitForKeyElements ("input[name='thisradio'][value='123']", selectRadioButton, true);

function selectRadioButton (jNode) {
   jNode.prop ('checked', true);
}

//$("input[name='thisradio'][value='123']").prop ('checked', true);

document.getElementByValue("Запустить").dispatchEvent(new MouseEvent('click'));


Подскажите, пожалуйста, что я делаю не так?.. :-?

Спасибо!

рони 15.01.2021 02:02

Цитата:

Сообщение от The_Immortal
getElementByValue

где почитать про это?

The_Immortal 15.01.2021 02:07

рони, да до "этого" вообще дело не доходит - radiobutton не выбирается :(

рони 15.01.2021 02:16

Цитата:

Сообщение от The_Immortal
выбрать "радио" и кликнуть по кнопке.

document.querySelector('[name="thisradio"][value="123"]').checked = true;
document.querySelector('[value="Запустить"]').dispatchEvent(new MouseEvent('click'));

The_Immortal 15.01.2021 02:40

рони, благодарю за подсказку, но не сиё робит... :(

Хотя если открыть консоль браузера, то срабатывает...

Aetae 15.01.2021 03:51

@run-at      document-start
тут лишнее. Код запускается до того как какие-либо кнопки появятся в документе.

The_Immortal 15.01.2021 17:40

Aetae, большое спасибо!



Цитата:

Сообщение от рони
document.querySelector('[value="Запустить"]').dispatchEvent(new MouseEvent('click'));

Почему-то эта кнопка срабатывает не так, как если кликать по ней. По коду выше выдается страница, где сообщается, что radiobutton не выбран... Если же вручную щелкнуть, то всё нормально срабатывает. Можно ли как-то запустить то, что указано на самой кнопке, т.е. вот это:
onclick="send(); return false;"
?

рони 15.01.2021 18:24

The_Immortal,
send(); вместо всей строки

The_Immortal 16.01.2021 00:23

рони, я же правильно понял:
// ==UserScript==
// @name     Скрипт БезИмени 648414
// @version  1
// @grant       unsafeWindow
// @grant       GM_openInTab
// ==/UserScript==

document.querySelector('[name="thisradio"][value="123"]).checked = true;
send();
? Так нужный radio выбирается, но кнопка не срабатывает...
Пробовал так:
// ==UserScript==
// @name     Скрипт БезИмени 648414
// @version  1
// @grant       unsafeWindow
// @grant       GM_openInTab
// ==/UserScript==

document.querySelector('[name="thisradio"][value="123"]).checked = true;
send();
return false;
- тоже не хочет :(

А из-под консоли send(); срабатывает как надо...

рони 16.01.2021 00:29

The_Immortal,
ну попробуйте кликнуть дважды
document.querySelector('[name="thisradio"][value="123"]').dispatchEvent(new MouseEvent('click'));
document.querySelector('[value="Запустить"]').dispatchEvent(new MouseEvent('click'));


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