我正在尝试创建一个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的事件处理程序出错:
错误:调用表单tabs.executeScript(undefined,function)不匹配定义tabs.executeScript(可选整数tabId,对象详细信息,可选函数回调)
我该怎么办?
答案 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"});
});