当.click()不起作用时,如何以编程方式单击此页面上的按钮?

时间:2018-12-13 07:11:06

标签: javascript html reactjs google-chrome-extension

实际上,我正在开发一个扩展程序,该扩展程序有助于在快速销售期间从flipkart购买产品。在产品页面上,我无法借助JavaScript单击“立即购买”按钮,它向我显示undefined,这是“立即购买”按钮的代码:

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

The Button is in this page

我正在使用代码单击我的JavaScript文件中的此按钮

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

但是,即使我转到the page on the site并在控制台中执行,

$("._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对象。

如果我手动单击该按钮,则会显示“立即购买”对话框。您可以转到this page并自己尝试。

  • 我不明白这里是什么问题。我的代码或其filpkart网站方面的任何保护形式有问题吗?

3 个答案:

答案 0 :(得分:-1)

我认为您必须像这样在jQuery中使用多类选择器:

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

如您所见,我在课堂之间使用, 或像这样减少班级:

$("._2AkmmA").click()

答案 1 :(得分:-1)

您的代码可能在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>

答案 2 :(得分:-1)

仅当所有元素都已满载时,才必须调用代码,否则它将找不到。您必须像这样包裹JQuery

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