页面刷新期间Chrome扩展程序循环播放数组

时间:2018-05-30 00:12:13

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

我有一个页面,每次单击一个按钮都会重新加载,因此脚本会停止。但是,即使页面重新加载,我也需要脚本循环遍历数组。我应该直接在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给页面时间完成重新加载,然后再转到下一个数组时间。

1 个答案:

答案 0 :(得分:0)

您可以将内容脚本中的消息发送到后台脚本以进行计算。也许在后台脚本中保持冷却时间以对抗垃圾邮件。然后,如果需要,您可以使用消息将结果发送回内容脚本。

检查一下:https://developer.chrome.com/extensions/messaging