Как программно нажать кнопку на этой странице, когда .click () не работает? - PullRequest
0 голосов
/ 13 декабря 2018

На самом деле, я работаю над расширением, которое поможет купить товар у флипкарта во время флэш-продажи.На странице товара я не могу нажать кнопку «Купить сейчас» с помощью JavaScript, покажите мне undefined это код кнопки Купить сейчас:

<form><button class="_2AkmmA _2Npkh4 _2kuvG8 _7UHT_c" type="button"><span class="_279WdV"></span> <!-- -->BUY NOW</button></form>

Кнопкана этой странице

Я использую код для нажатия этой кнопки в моем файле JavaScript

$("._2AkmmA._2Npkh4._2kuvG8._7UHT_c").click();

Однако, даже когда я захожу на страницу на сайте и, в консоли, выполните

$("._2AkmmA._2Npkh4._2kuvG8._7UHT_c").click();

Консоль показывает undefined и не запускает процесс «Купить сейчас», который запускается вручную с помощью мыши, чтобы нажать «Купить сейчас»кнопка.В консоли выполняется

$("._2AkmmA._2Npkh4._2kuvG8._7UHT_c");

Показывает:

<button class="_2AkmmA _2Npkh4 _2kuvG8 _7UHT_c" type="button"><span class="_279WdV"></span> <!-- -->BUY NOW</button>

, которая является правильной кнопкой, которую я хочу программно нажать.Обратите внимание, что, хотя я использовал $(), возвращается , а не объект jQuery.

Если я нажму на эту кнопку вручную, мне отобразится диалоговое окно «Купить сейчас»,Вы можете перейти на эту страницу и попробовать сами.

  • Я не понимаю, в чем здесь проблема.Есть ли какие-либо проблемы в моем коде или на его стороне защиты на сайте filpkart?

Ответы [ 3 ]

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

Ваш код, вероятно, работает до полной загрузки DOM.

Попробуйте обернуть свой код в $(document).ready(function(){..., что обеспечит выполнение кода внутри только после того, как страница объектной модели документа (DOM) будет готова.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script>
  $(document).ready(function(){
    $("._2AkmmA._2Npkh4._2kuvG8._7UHT_c").click();
  });

  function test(){
    alert('clicked');
  }
</script>

<form><button class="_2AkmmA _2Npkh4 _2kuvG8 _7UHT_c" type="button" onclick="test()"><span class="_279WdV"></span> <!-- -->BUY NOW</button></form>
0 голосов
/ 13 декабря 2018

Вы должны вызывать код только тогда, когда все элементы полностью загружены, иначе он не найдет его.Вы должны завернуть в JQuery как:

$(document).ready(function(){
    $("._2AkmmA._2Npkh4._2kuvG8._7UHT_c").click();
});
0 голосов
/ 13 декабря 2018

Я думаю, вы должны использовать мультиклассовый селектор в jQuery следующим образом:

$("._2AkmmA, ._2Npkh4, ._2kuvG8, _7UHT_c").click()

Как видите, я использую , между классами или сокращаю ваш класс следующим образом:

$("._2AkmmA").click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...