[]循环检查按钮Chrome扩展程序无效

时间:2016-10-28 08:59:29

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

  

大家好,我正在尝试创建一个chrome扩展程序,一旦我点击chrome扩展程序,脚本就会启动,并且会每隔1毫秒循环检查一个带有 id "的按钮。产品addtocart按钮&#34 ;.因此,一旦循环找到按钮,就需要立即点击它。

我想如果有必要,该网站是Adidas.ae,一旦新鞋出来,将会有一个倒计时鞋可用,一旦倒计时结束,按钮添加到卡将是可以点击,我需要马上点击它。

-

我接受了@ Barmar的建议并更改了id" product-addtocard-button"到变量并在函数参数中使用它。我还在" tab.id"。

之后从函数中删除了大括号

我的原始代码:

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);
        }
    }

        });
});

更新的代码:

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

chrome.browserAction.onClicked.addListener(function(tab) 
    {
    chrome.tabs.executeScript(tab.id,

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

注意:这是此问题的扩展:Why is my Javascript Chrome extension code not working? (Loop check for button)。我已经接受了建议并需要更多帮助,因此我发布了更新后的代码。

扩展的问题是当它被点击时没有发生任何事情。有什么帮助吗?

1 个答案:

答案 0 :(得分:-1)

根据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"});
});