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 16.01.2021 00:37

рони,
Цитата:

Сообщение от рони
кликнуть дважды

А так происходит, что и ранее:
Цитата:

Сообщение от The_Immortal
По коду выше выдается страница, где сообщается, что radiobutton не выбран

В консоли при этом выводится ошибка:
TypeError: document.querySelector(...) is null


На send(); (если из-под скрипта), кстати, в консоли пишется:
Цитата:

ReferenceError: send is not defined
Пробовал ещё вот так:
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();


Цитата:

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

Оказалось, что достаточно переинициализировать страницу:
location.reload();
return false;
Но я вот не могу понять каким образом организовать цикл, к примеру, чтобы скрипт выполнялся 10 раз? Надо какую-то глобальную переменную заводить как-то...


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