Javascript click () не работает на некоторых элементах - PullRequest
3 голосов
/ 15 декабря 2011

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

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

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

Ответы [ 4 ]

4 голосов
/ 15 декабря 2011
document.getElementsByClassName('tab-button')[0].dispatchEvent(event)

или

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

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

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

1 голос
/ 15 декабря 2011

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

var btn = document.querySelectorAll("tab-button")[0];
btn.click();
0 голосов
/ 09 июня 2018

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

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 это не сработает.

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

0 голосов
/ 15 декабря 2011

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

...