Javascript click() не работает над некоторыми элементами

Вопрос: Я хочу написать некоторую автоматизацию на веб-сайт. Просто заполнение форм и имитация кликов по элементам. Но для некоторых элементов функция JavaScript click() не работает. Например, на этой странице: http://www1.plus.pl/bsm/ Если я нажимаю() на кнопку "Wyślij", ничего не происходит. Это моя команда: document.getElementsByClassName('tab-button')[0].click() Что не так? Почему на других элементах эта функция работает? Лучший ответ:

Вопрос:

Я хочу написать некоторую автоматизацию на веб-сайт. Просто заполнение форм и имитация кликов по элементам. Но для некоторых элементов функция JavaScript click() не работает. Например, на этой странице: http://www1.plus.pl/bsm/ Если я нажимаю() на кнопку “Wyślij”, ничего не происходит. Это моя команда:

document.getElementsByClassName(‘tab-button’)[0].click()

Что не так? Почему на других элементах эта функция работает?

Лучший ответ:

С вашей помощью я нашел решение:

var evt = document.createEvent(‘MouseEvents’) evt.initMouseEvent(‘mousedown’, true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); document.querySelectorAll(‘.tab-button’)[0].dispatchEvent(evt)

Обратите внимание, что это событие должно быть mousedown а не click. Некоторые сайты работают иначе, чем другие. Еще одна важная вещь – третий параметр. Он должен быть установлен в false (в данном конкретном случае). Он устанавливает cancelable значение. Без этого параметра в false это не сработает.

Спасибо за все ответы!

Ответ №1document.getElementsByClassName(‘tab-button’)[0].dispatchEvent(event)

или

document.getElementsByClassName(‘tab-button’)[0].fireEvent(event)

это то, как вы могли это сделать… но, пробуя его на сайте, событие “click” не привязано к этому элементу

EDITED См. Как инициировать событие в JavaScript?

Ответ №2

Я подозреваю, что это потому, что браузер, на котором вы тестируете, не имеет встроенной поддержки .getElementsByClassName. Попробуйте вместо этого использовать document.querySelectorAll или назначьте свой элемент идентификатору и используйте document.getElementById. Например:

var btn = document.querySelectorAll(«tab-button»)[0]; btn.click(); Ответ №3

вы делаете это после Loaded на теге body, если некоторые элементы не нажимают, это может быть связано с тем, что они не загружаются в DOM при запуске скрипта.

Оцените статью
Добавить комментарий