1

ChromeタブAPIを使用してクロム拡張機能を構築しています。開いているタブをすべて開いて、n秒ごとに更新します。 forループを5秒に1回反復するのに問題があります。私は、タイムアウトなどを設定するいくつかの異なる方法を試してみましたが、私はループがまったく実行されていないか、または無限ループを取得しています。私はJavaScriptに新しいです。どんな助けもありがとう!クロムタブを切り替えて5秒ごとに更新する - 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

下記のように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); 
+0

これはうまくいかないようです。 – JSilvia

+0

私は上記のコードでいくつかの変更を行いましたが、今はブラウザで正常に動作しています。 –

0

これは実用的なソリューションです。

chrome.browserAction.onClicked.addListener(function(tab) { 

    setInterval(function() { 
    chrome.tabs.query({currentWindow: true}, function(tabs) { 
     var foundSelected = false; 
     for(var 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); 
      return; 
     } 
     } 
    }); 
    }, 5000); 

}); 
関連する問題