为什么我的Javascript Chrome扩展程序代码无效? (循环检查按钮)

时间:2016-10-27 18:41:36

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

我正在尝试制作一个Chrome扩展程序,不断检查带有ID" product-addtocart-button"的按钮,一旦找到它就会点击。

我通过在线学习和研究来结合这个javascript。我对javascript知之甚少,所以我真的不知道出了什么问题。

我的旧javascript文件非常裸露,我设置好了,所以当我点击扩展按钮时,按钮会自动点击。

代码:

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(tab.id,{
        code: "document.getElementById('product-addtocart-button').click();"
    });
});

现在,通过研究,我已经(尝试)添加了一个函数,在单击扩展按钮后,脚本将循环检查实际的扩展名,然后找到后单击它。

background.js:

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(tab.id,{
function waitForElementToDisplay(#product-addtocart-button, 10) {
        if(document.querySelector(#product-addtocart-button)!=null) {
            alert("document.getElementById('product-addtocart-button').click()")
            return;
        }
        else {
            setTimeout(function() {
                waitForElementToDisplay(#product-addtocart-button, 10);
            }, 10);
        }
    }

        });
});

当我点击Chrome扩展按钮时,没有任何反应。知道发生了什么事吗?

2 个答案:

答案 0 :(得分:0)

根据specifications,您必须调用executeScript,如:

chrome.tabs.executeScript(tab.id,{code:"yourCodePackedIntoOneString"});

chrome.tabs.executeScript(tab.id,{file:"yourCodeFile.js"});

但你在打电话:

chrome.tabs.executeScript(tab.id,{function()etc...});

试一试,看看它是怎么回事。

答案 1 :(得分:-1)

如果要触发特定页面的单击,请使用内容脚本文件而不是background.js。

  "content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "css": ["mystyles.css"],
      "js": ["jquery.js", "myscript.js"]
    }
  ],

如果要使用JQuery,请将JQuery下载到本地文件夹中。

if($('#product-addtocart-button').length>0)
$('#product-addtocart-button').click()