我正在尝试使用Chrome标签API构建Chrome扩展程序,该标签API会循环浏览窗口中的所有打开标签,并每隔n秒刷新一次。我无法每5秒钟迭代一次for循环。我已经尝试了几种不同的设置超时的方法,但是我要么完全没有运行循环,要么我得到一个无限循环。我是javascript的新手。任何帮助将不胜感激!
background.js
chrome.browserAction.onClicked.addListener(function(tab) {
// Send a message to the active tab
chrome.tabs.query({currentWindow: true}, function(tabs) {
var foundSelected = false;
(function switch() {
for(i = 0; i <= tabs.length; i++){
if(i == tabs.length){
i = 0;
}
if (tabs[i].active){
foundSelected = true;
}
// Finding the next tab
else if (foundSelected){
// Selecting the next tab.
chrome.tabs.update(tabs[i].id, {active: true});
chrome.tabs.reload(tabs[i].id);
setTimeout(switch, 5000);
}
}
})();
// var activeTab = tabs[0];
chrome.tabs.sendMessage(activeTab.id, {"message": "clicked_browser_action"});
});
});
content.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if( request.message === "clicked_browser_action" ) {
chrome.tabs.update(tabId, {selected: true});
}
}
);
我意识到已经有扩展器可以做到这一点。我正在创建自己的学习经验和更多的功能控制。
答案 0 :(得分:0)
创建如下所示的background.js。我thnik它会正常工作。
background.js
/* Below code start background.js when you start your browser
* and sw function work after every 5 second and reload every tab.
*/
function sw()
{
chrome.tabs.query({currentWindow: true},function(tabs){
var i=0;
console.log(tabs.length);
for(i=0;i<=tabs.length;i++)
{
chrome.tabs.reload(tabs[i].id);
}
})
};
setInterval(sw,5000);
答案 1 :(得分:0)
这是可行的解决方案。
<button type="button" class="your_class center-block"> Book </button>