我有一个页面,每次点击一个按钮都会重新加载,所以脚本会停止。但是,我需要该脚本循环通过一个数组,即使在页面重新加载之后。我是否应该直接在background.js文件中运行我的脚本,而不是执行另一个脚本?如果是这样的话,不确定是怎么做的。我最初尝试了一个带有webview的Chrome应用程序,但找不到点击按钮的方法。
<div id="button">click here</div>
//清单
{
"manifest_version": 2,
"name": "CycleThru",
"version": "1.0",
"offline_enabled": true,
"icons": { "16": "on.png",
"48": "on.png",
"128": "on.png" },
"background": {
"scripts": ["background.js"],
"persistent": false
},
"permissions": [
"activeTab"
],
"content_scripts": [
{
"matches": ["<all_urls>"],
"css": ["on.css"],
"js": ["jquery.min.js"]
} ],
"browser_action": {
"default_icon": "off.png"
}
}
//后台JS
var toggle = false;
chrome.browserAction.onClicked.addListener(function(tab) {
toggle = !toggle;
if(toggle){
chrome.browserAction.setIcon({path: "on.png", tabId:tab.id});
chrome.tabs.executeScript(tab.id, {file:"on.js"});
}
else{
chrome.browserAction.setIcon({path: "off.png", tabId:tab.id});
chrome.tabs.executeScript(tab.id, {file:"off.js"});
}
});
//需要持续运行的脚本
var candy = ["twix", "taffy"];
for(var i = 0; i < candy.length; i++) {
$("#button").click();
setTimeout(function(){ console.log("candy") }, 3000);
}
在转到下一个数组时间之前,我有setTimout让页面有时间完成重载。
发布于 2018-05-30 08:25:50
您可以从内容脚本向后台脚本发送一条消息来执行计算。也许也可以在后台脚本中保持冷却,以打击垃圾邮件。然后,如果需要,可以使用消息将结果发送回内容脚本。
https://stackoverflow.com/questions/50594664
复制相似问题