Скрипт выбора 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')); Подскажите, пожалуйста, что я делаю не так?.. :-? Спасибо! |
Цитата:
|
рони, да до "этого" вообще дело не доходит - radiobutton не выбирается :(
|
Цитата:
document.querySelector('[name="thisradio"][value="123"]').checked = true; document.querySelector('[value="Запустить"]').dispatchEvent(new MouseEvent('click')); |
рони, благодарю за подсказку, но не сиё робит... :(
Хотя если открыть консоль браузера, то срабатывает... |
@run-at document-startтут лишнее. Код запускается до того как какие-либо кнопки появятся в документе. |
Aetae, большое спасибо!
Цитата:
onclick="send(); return false;"? |
The_Immortal,
send(); вместо всей строки |
рони, я же правильно понял:
// ==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(); срабатывает как надо... |
The_Immortal,
ну попробуйте кликнуть дважды document.querySelector('[name="thisradio"][value="123"]').dispatchEvent(new MouseEvent('click')); document.querySelector('[value="Запустить"]').dispatchEvent(new MouseEvent('click')); |
рони,
Цитата:
Цитата:
TypeError: document.querySelector(...) is null На send(); (если из-под скрипта), кстати, в консоли пишется: Цитата:
document.querySelector('[value="Запустить"]').form.submit();Также ошибка "radiobutton не выбран": TypeError: document.querySelector(...) is null --- Нашел на странице саму функцию send: function send(){ var frm = document.mychance; var chance_type = ''; for (var i=0;i < frm.elements.length;i++) { var elmnt = frm.elements[i]; if (elmnt.type=='radio') { if(elmnt.checked == true){ chance_type = elmnt.value; break;} } } var ajax = new tbdev_ajax(); ajax.onShow (''); var varsString = ""; ajax.requestFile = "mybchance.php"; ajax.setVar("id", chance_type); ajax.method = 'POST'; ajax.element = 'ajax'; ajax.sendAJAX(varsString); }Запихнул её в скрипт и получил ошибку: ReferenceError: tbdev_ajax is not defined --- Урааа!!! Вот где была собака зарыта: <script language="javascript" type="text/javascript" src="js/ajax.js"></script> Пока получилось вот так: // ==UserScript== // @name Скрипт БезИмени 648414 // @version 1 // @grant unsafeWindow // @grant GM_openInTab // @run-at document-end // @require [url]https://somewww.org/js/ajax.js[/url] function send(){ var frm = document.mychance; var chance_type = ''; for (var i=0;i < frm.elements.length;i++) { var elmnt = frm.elements[i]; if (elmnt.type=='radio') { if(elmnt.checked == true){ chance_type = elmnt.value; break;} } } var ajax = new tbdev_ajax(); ajax.onShow (''); var varsString = ""; ajax.requestFile = "mybchance.php"; ajax.setVar("id", chance_type); ajax.method = 'POST'; ajax.element = 'ajax'; ajax.sendAJAX(varsString); } document.querySelector('[name="thisradio"][value="123"]').dispatchEvent(new MouseEvent('click')); send(); Цитата:
location.reload(); return false;Но я вот не могу понять каким образом организовать цикл, к примеру, чтобы скрипт выполнялся 10 раз? Надо какую-то глобальную переменную заводить как-то... |
Часовой пояс GMT +3, время: 06:41. |