我正在尝试制作一个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扩展按钮时,没有任何反应。知道发生了什么事吗?
答案 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()