【问题标题】:Trigger click not working触发点击不起作用
【发布时间】:2017-02-21 13:35:09
【问题描述】:

编辑: 非常感谢您的所有努力,现在让我的所有代码运行起来!

我想触发对https://shop.adidas.ae/en/stan-smith-shoes/S82255.html 的点击(制作鞋机器人)。 为什么这段代码不能触发尺寸类型按钮?

setTimeout(function () {
   $('select.product-type.js-size-type').trigger('click');
}, 1000);

这是选择按钮:

<select class="product-type js-size-type">

这就是 chrome 控制台所说的

caught TypeError: Cannot read property 'click' of null
    at <anonymous>:2:41

更新:

我的 chrome 扩展清单:

{
  "name": "name",
  "description": "test",
  "version": "1.0",
  "manifest_version": 2,
  "permissions": ["*://*/*"],
  "content_scripts": [
    {
      "matches": ["*://*.adidas.ae/*"],
      "js": ["jquery.js", "yeezyCopper.js"]
    }
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  }
}

YeezyCopper.js:

setTimeout(function () {
   $('select.product-type.js-size-type').trigger('click');
}, 1000);

提前致谢!

【问题讨论】:

  • 尝试将其放入就绪状态:$(function(){ $('select.product-type.js-size-type').trigger('click'); })
  • 1000 可能不够。使用更大的超时时间或 MutationObserver 来监视元素。 Is there a JavaScript/jQuery DOM change listener?
  • 亚当,你的代码实际上什么也没做,所以控制台没有错误代码......
  • wOxxOm,我不认为超时应该是可能的,因为在输入控制台时页面已经加载。让我看看 MutationObserver...
  • 如果您询问 chrome 扩展,您几乎必须发布 manifest.json 文件,并告诉我们哪个 js 文件包含您向我们展示的代码。但首先将其缩减为minimal reproducible example

标签: javascript jquery google-chrome google-chrome-extension


【解决方案1】:

代码可以正常工作,但以编程方式触发的“点击”事件不会打开select 选项列表。

Is it possible to use JS to open an HTML select to show its option list?

您可以通过为该元素添加自己的onclick 事件然后触发click 事件来测试它是否有效。

【讨论】:

    【解决方案2】:

    更新

    setTimeout(function () {
       $('select.product-type.js-size-type').trigger('click');
    }, 1000);
    

    setTimeout(function () {
       $('select .product-type.js-size-type').trigger('click');
    }, 1000);
    

    【讨论】:

    • 不起作用,我不知道为什么会这样。我的代码也适用于其他网页...
    • 啊,我之前错过了,你需要在type和JS之间放空格
    • setTimeout(function () { $('.select.product-type .js-size-type').trigger('click'); }, 1000);
    • 这是一个元素,所以我不应该用点交换所有空格吗?感谢您的帮助
    • 不,在您的示例中,有两个类“product-type”和“js-size-type”,这就是您应该使用“.”的原因。像往常一样开始类名和空格。有意义吗??
    猜你喜欢
    • 2011-08-17
    • 1970-01-01
    • 2022-01-20
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多