【问题标题】:Chrome Extension to click on page loadChrome 扩展点击页面加载
【发布时间】:2013-12-09 18:34:22
【问题描述】:

我正在尝试创建一个 chrome 扩展程序,该扩展程序将在加载/刷新某个站点的页面时单击链接。到目前为止,我还不能让它工作,我尝试了来自不同来源的不同代码 sn-ps,但无论我尝试什么,它仍然没有做任何事情。

我的清单看起来像这样 --

 {
  "name": "SITENAME",
  "manifest_version": 2,
  "version": "1",
  "content_scripts": [
    {
      "matches": ["*://SITENAME.com/*"],
      "js": ["sitenamelink.js"]
    }
  ], "permissions": [
    "tabs" , "*://SITENAME.com/*"
  ]
}

该站点将在其末尾附加随机动态变量,例如“sitename.com/product/model...等”。所以真的没有办法让它是可预测的,唯一的办法就是每次都找到页面 url 并更新扩展名,这不是我想做的事情。

我试图保持 js 编码简洁明了,而我现在拥有的 js 是 --

$(document).ready(function(){
$('#addToCartLink').trigger('click');
});

我也试过了——

jQuery.noConflict();
jQuery(document).ready(function() {
   jQuery('a#addToCartLink')[0].click();
});

还有这个——

$(document).ready(function(){
$('a#addToCartLink')[0].click();
});

有链接的页面,它的编码是这样的——<a id="addToCartLink" href="javascript:addToCart()" onclick="showBubble(this)" onmouseout="hideBubble()"><span>Add to Cart</span></a>

我不确定如何检查它以查看我的代码在哪里失败,因为当我使用 chrome 进行检查时,它只显示该页面编码中的 js 错误。

那我做错了什么?任何帮助深表感谢。谢谢。

这是一个测试页面,如果您点击此链接,则选择尺寸,现在只需要点击添加到购物车链接。 -- 测试页

【问题讨论】:

  • 在 dom 节点本身上调用 .click()。 document.getElementById('addToCartLink').click()
  • 或者更好的是,完全跳过点击。 showBubble(document.getElementById('addToCartLink'));
  • @KevinB 但如果我跳过点击不会只是让气泡出现而不是将商品添加到购物车?
  • 你说得对,我错过了 href javascript。然后点击方法。或者,您也可以执行 addToCart 方法。
  • 我尝试将 js 文件更改为只有那一行 - document.getElementById('addToCartLink').click();但它没有用。

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


【解决方案1】:

我的示例扩展(见下面的代码)对我来说很好。
例如:访问您提供的 Test Page,点击 ADD TO CART 链接并将商品添加到购物车。

ma​​nifest.json:

{
    "manifest_version": 2,

    "name":    "Test Extension",
    "version": "0.0",
    "offline_enabled": false,

    "content_scripts": [{
        "matches":    ["*://*.sitename.com/*"],
        "js":         ["content.js"],
        "run_at":     "document_end",
        "all_frames": false
    }]
}

content.js

document.getElementById('addToCartLink').click();

【讨论】:

  • 我还有一个问题,也许你可以回答。我想知道是否可以从选择菜单中选择一个选项,然后执行上述答案?像这样document.getElementById("#product_sizes").children("option[value='12.0']").prop('selected',true)
  • 几乎一切皆有可能。你的想象力是极限 :) 如何取决于你到底想要什么以及 DOM 的样子,所以如果你在 SO 中找不到相关的东西,请发布一个包含所有必要信息的问题。
猜你喜欢
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 2013-11-28
  • 2013-06-22
  • 1970-01-01
相关资源
最近更新 更多