Скрипт выбора 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, время: 13:19. |