Как я могу включить отключенную кнопку с Greasemonkey? - PullRequest
0 голосов
/ 09 декабря 2018

Я нацеливаюсь на этот веб-сайт: https://ib.ing.cz/transactional-cz/#login/credentials

У него есть форма ввода, которую я могу заполнить, используя

document.querySelector('input[name=customer-id]').value = "1234567890";

Однако кнопка, которая позволит мне идти дальше, отключена,Неважно, что я пытаюсь сделать, так будет до тех пор, пока я не начну заполнять форму вручную.Как я могу включить кнопку (и в идеале нажать на нее программно тоже)?Я пытался смоделировать нажатия клавиш или манипулировать атрибутом «отключен» кнопки, но у меня ничего не вышло.

ОБНОВЛЕНИЕ: Наконец-то все заработало, код, который я использую, находится здесь: https://greasyfork.org/en/scripts/375326-p%C5%99ihla%C5%A1-se-na-ing (по какой-то причине мне пришлось удалить из ответа оператор if / else, условие не было верно в контексте скрипта, даже если это было в консоли Firefox)

Однако,было еще какое-то волшебство, которое мешало этому работать, когда я нажимал кнопку (вручную или с помощью скрипта), получая сообщение об ошибке, говорящее, что «сайт вышел из строя».

Оказалось, что нужно такжедобавить событие "изменить".Исходная ссылка в ответе приводит к старому вопросу со ссылкой на Firebug, который с тех пор был включен в Firefox.Ключом для меня было использование отладчика.Просто кликаешь прямо на сайте и выбираешь «осмотреть этот элемент».События, связанные с этими элементами, затем можно найти после нажатия на эти маленькие треугольники в инспекторе: enter image description here

А для чтения кода веб-сайтов лучше всего поставить скрабл, который они посылаютв украшение, как это: https://beautifier.io/

1 Ответ

0 голосов
/ 09 декабря 2018

Ссылка Выбор и активация правильных элементов управления на сайте, управляемом AJAX .

Ваш целевой сайт запускает проверку "Номер клиента" (чтобы включить эту кнопкуи т. д.) в событии keyup, помещенном в предок деления ввода.

Это означает, что вы должны отправить событие keyup после установки значения и убедиться, чтособытие всплывает от входа.

Примерно так:

var cIdInpt = document.querySelector ('input[name=customer-id]');
if (cIdInpt) {
    var keyupEvnt   = new Event ('keyup', {bubbles: true} );  //  no key code needed in this case.
    cIdInpt.value   = "1234567890";

    cIdInpt.dispatchEvent (keyupEvnt);
}
else {
    console.error ("cIdInpt not found.");
}
...