Как вызвать нажатие кнопки на веб, который использует API истории HTML5, используя JavaScript? - PullRequest
0 голосов
/ 20 февраля 2020

Я разрабатываю расширение Chrome, которое автоматизирует клики. Мое расширение работало над многостраничным приложением. Он может нажимать кнопки на сайте. Но у меня возникла проблема с этим конкретным c веб-сайтом, который является одностраничным приложением.

Мое расширение не может вызвать нажатие кнопки с помощью этого JavaScript

function clickButton(){
var submit =  document.getElementsByClassName(".class");
submit.click();
}

My Вопрос в том, как вызвать нажатие кнопки на одностраничном приложении? Поскольку кажется, что использование .click () не работает

Дополнительная информация

То, как работает мое расширение, заключается в том, что я нажимаю на кнопку поиска, она показывает мне результат. Если есть результат, я делаю c вещей. Но если результат будет пустым, я go вернусь на предыдущую страницу (страницу поиска) и затем снова нажму кнопку поиска. И мое расширение не может нажимать ни кнопку поиска, ни кнопку назад. Я предполагаю, что когда я нажимаю кнопку с помощью .click (), веб-сайт не запрашивает указанную страницу c HTML для отображения. Я ошибаюсь?

Другая информация об этом сайте

Так что этот веб-сайт является одностраничным приложением. После того, как я захожу на этот сайт, он приводит меня к https://sample.com/page1 - который является домом. Затем я go на страницу поиска (URL-адрес все тот же, но он показывает другой макет, который является страницей поиска). На странице поиска я ввожу параметры поиска, затем нажимаю кнопку поиска (URL-адрес остается прежним, но он показывает другой макет, то есть результаты поиска). Поэтому я предполагаю, что эти веб-сайты работают каждый раз, когда я нажимаю на определенную страницу, она запрашивает макет страницы с помощью history.pushState -i думаю. Поэтому мне интересно, есть ли способ манипулировать этим history.pushState? Например, вместо нажатия кнопки «Назад» могу ли я просто go перейти прямо на нужную страницу?

1 Ответ

0 голосов
/ 20 февраля 2020

document.getElementsByClassName(".class") возвращает массив, поэтому array.onclick () не будет работать.

Чтобы вызвать событие html, щелкните не только:

function trigger(elm, type) {
  if (elm) {
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent(type, true, true);
    elm.dispatchEvent(evt);
  }
}

В вашем случае Я думаю, что вы хотите:

trigger(document.querySelector('.class'), 'click')
...