2016-06-07 11 views
0

Ich versuche, eine Chrome-Erweiterung zu erstellen, die die folgenden ausgeführt wird, wenn ich eine Taste auf popup.html klicken:Wie wiederhole ich diesen Code für alle Registerkarten? Chrome Extension

  1. erhält und liest die Urls jedes Register einzeln
  2. , wenn die URL beginnt mit "https://www.linkedin.com/company/", erhält die Firmen-ID direkt nach "Firma /". (Die URL sieht in der Regel wie folgt aus: https://www.linkedin.com/company/164233?trk=prof-exp-company-name so in diesem Fall zum Beispiel, ich möchte „164233“ erhalten) es dann sollte eine neue Registerkarte mit der folgenden URL erstellen: https://www.linkedin.com/vsearch/p?f_CC=164233

Die folgende Codes tun, was ich nur für die aktuelle Registerkarte möchte. Ich möchte die Erweiterung für alle Tabs tun, wenn ich auf "btn2" klicke.

Wie kann ich es wiederholen? Mit einer for-Schleife? Vielen Dank!

document.addEventListener('DOMContentLoaded', function(){ 
     document.getElementById('btn2').addEventListener('click', printurl) 
}); 

printurl = function(){ 
chrome.tabs.query({ 
    active: true, 
    lastFocusedWindow: true 
}, function(tabs) { 


    // and use that tab to fill in out title and url 
    var query = tabs[0].url; 
    var companyId = query.slice(33, 41); 
    var companyId2 = companyId.replace(/\D/g, ''); 

    saeurl = 'https://www.linkedin.com/sales/search?pivotType=EMPLOYEE&pivotId=' + companyId2; 
    chrome.tabs.create({url: saeurl, selected:false}) 

}) 
} 

Antwort

0

Wenn ich verstanden habe, was Sie versuchen, richtig zu machen, müssen Sie ein paar Änderungen vornehmen. Erstens, wenn Sie alle Tabs wollen, dann wollen Sie nicht nach active oder lastFocusedWindow fragen.

Sobald Sie dieses Problem behoben haben, sollten Sie alle Registerkarten erhalten, an diesem Punkt müssen Sie Ihre Logik für jede Registerkarte in tabs abschließen.

chrome.tabs.query({}, function(tabs) { 

    for(var i = 0; i < tabs.length; i++) { 
     // and use that tab to fill in out title and url 
     var query = tabs[i].url; 
     var companyId = query.slice(33, 41); 
     var companyId2 = companyId.replace(/\D/g, ''); 

     saeurl = 'https://www.linkedin.com/sales/search?pivotType=EMPLOYEE&pivotId=' + companyId2; 
     chrome.tabs.create({url: saeurl, selected:false}) 
    } 

}) 

Es lohnt sich auch, über die Logik nachzudenken, die Sie verwenden, um die Firmen-ID aus der URL zu extrahieren. Ihre aktuelle Logik basiert auf der Länge der ID, die sich ändern könnte. Werfen Sie einen Blick auf this gist, die ein paar verschiedene Möglichkeiten zum Parsen von URIs zeigt.

Verwandte Themen