1

Ich versuche, eine Chrome-Erweiterung mit der Chrome-Tabs-API zu erstellen, die alle geöffneten Registerkarten in einem Fenster durchläuft und alle n Sekunden aktualisiert. Ich habe Probleme, meine for-Schleife einmal alle 5 Sekunden zu wiederholen. Ich habe ein paar verschiedene Möglichkeiten ausprobiert, um Timeouts und so einzustellen, aber ich habe entweder die Schleife nicht oder ich bekomme eine Endlosschleife. Ich bin neu in Javascript. Jede Hilfe wäre willkommen!Chrom-Registerkarten wechseln und alle 5 Sekunden aktualisieren - 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}); 
    } 
    } 
); 

ich erkennen, dass es bereits Erweiterungen gibt, die dies tun. Ich erschaffe meine eigene Lernerfahrung und für mehr Kontrolle über Funktionalität.

Antwort

0

Erstellen Sie background.js wie unten angegeben. Ich thnik es wird richtig funktionieren.

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

Das scheint nicht zu funktionieren. – JSilvia

+0

Ich habe einige Änderungen im obigen Code vorgenommen und jetzt funktioniert es in meinem Browser. –

0

Dies ist die Arbeitslösung.

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); 

}); 
Verwandte Themen