Chrome扩展程序循环检查按钮错误

时间:2016-10-28 10:59:18

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

我正在尝试创建一个chrome扩展程序,一旦我点击chrome扩展程序,脚本就会启动并将每隔1毫秒循环检查一个带有id" product-addtocart-button"的按钮。因此,一旦循环找到按钮,就需要立即点击它。

的manifest.json:

{
    "description": "Click a button with ID=product-addtocart-button",
    "manifest_version": 2,
    "name": "click-product-addtocart-button",
    "version": "0.1",

    "permissions": [
        "activeTab"
    ],

    "background": {
        "scripts": [
            "background.js"
        ]
    },

    "browser_action": {
        "default_icon": {
            "32": "icon.png"
        },
        "default_title": "Click product-addtocart-button"
    }
}

background.js:

var button = document.getElementById("product-addtocart-button");
var time = 10;

chrome.browserAction.onClicked.addListener(function(tab) 
    {
    chrome.tabs.executeScript(tab[0],

        function waitForElementToDisplay(button, time) {
                if(document.querySelector(button)!=null) 
                {
                    document.getElementById(button).click();
                    return;
                }
                else 
                {
                    setTimeout(function() {
                        waitForElementToDisplay(button, time);
                    }, time);
                }
            }
        );
    }
);

popup.html:

<!doctype html>
 <html>
  <head>
    <title>Getting Started Extension's Popup</title>
    <style>
      body {

      }
      #status {

      }
    </style>

          <script src="popup.js"></script>
  </head>
  <body>
  </body>
</html>

我收到了这些错误:

  

browserAction.onClicked的事件处理程序出错:

*指向我: Pic1 然后,这个错误

  

错误:调用表单tabs.executeScript(undefined,function)不匹配定义tabs.executeScript(可选整数tabId,对象详细信息,可选函数回调)

*指向我: Pic2

我该怎么办?

1 个答案:

答案 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...});

试试这个:

有一个名为 myWaitingLoop.js 的文件:

function waitForElementToDisplay(){
    var button = document.querySelector("#product-addtocart-button");
    if (button){
        button.click();
    } else {
        setTimeout(waitForElementToDisplay,100);
    }
}  
waitForElementToDisplay();

然后,在你的background.js脚本中:

chrome.browserAction.onClicked.addListener(function(tab){
    chrome.tabs.executeScript(tab.id,{file:"myWaitingLoop.js"});
});