#javascript #greasemonkey
#javascript #greasemonkey
Вопрос:
В форме присутствуют две кнопки, и я хотел бы использовать GreaseMonkey для автоматического нажатия одной из кнопок при загрузке страницы. Эти две кнопки являются:
<td rowspan="2"><input class="first action" name="first" type="submit" value="First Action" style="font-size: 10pt;" /></td>
<td rowspan="2"><input class="second action" name="second" type="submit" value="Second Action" style="font-size: 10pt;" /></td>
Я попробовал два приведенных ниже кода, но ни один из них не работает. Первый выбирает форму и пытается отправить ее, и я получаю сообщение об ошибке «Действие не разрешено». Второй пытается нажать () кнопку.
Первый:
var button = document.getElementById('units_form');
window.location(button);
Второй:
var button = document.getElementByClassName('first action');
button.click();
Комментарии:
1. вторая содержит синтаксическую ошибку, которую вы бы увидели, если бы потрудились проверить консоль браузера.
getElement(s)ByClassName
. Это элементы ВО МНОЖЕСТВЕННОМ ЧИСЛЕ, а не в единственном числе.2. Элемент может быть с или без s, правильно? Это не работает в любом случае.
3. нет. это невозможно. это единственное число для «byId», потому что идентификатор dom ДОЛЖЕН быть уникальным. но может быть несколько элементов с одним и тем же классом, поэтому функция также множественная.
4. Делает с тех пор. Спасибо. Но после этого исправления он все равно не работает.
5. geBClassName также возвращает массив результатов, а не один узел dom. вы не можете щелкнуть по массиву. попробуйте
button[0].click
, но сначала сделайтеconsole.log(button)
, чтобы увидеть, что вы получили обратно.
Ответ №1:
Во-первых, общее решение:
- чтобы получить объект элемента по имени класса, используйте
document.getElementsByName("class_name")[0]
. Последняя часть[0]
дает вам первый из всех элементов, имеющих этот класс - Чтобы запустить событие для элемента, см. Эту статью о MDN. Я настоятельно рекомендую прочитать все это. Судя по вашему сообщению, вы довольно ленивы, когда дело доходит до чтения статей.
Собираем все это вместе:
var button_element = document.getElementsByName("button-class-name")[0];
var event_object = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
button_element.dispatchEvent(event_object);
Кроме того, большинство сайтов используют библиотеку jQuery, для которой это сводится к:
$(".class_name").click();
Обратите внимание, что это сработает для всех элементов с этим именем класса.