大家好,我正在尝试创建一个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)。我已经接受了建议并需要更多帮助,因此我发布了更新后的代码。
扩展的问题是当它被点击时没有发生任何事情。有什么帮助吗?
答案 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"});
});