2017-03-10 9 views
0

In meiner Chrome-Erweiterung möchte ich die aktuelle URL-Adresse des Tabs abrufen. In meiner angular2-Komponente habe ich eine String-Variable zum Speichern der URL erstellt. Dann mache ich das:Die Registerkarte URL kann nicht abgerufen werden.

ngOnInit() { 
    chrome.tabs.getCurrent(function(tab){ 
     this.currentUrl = tab.url; 
    }); 
    console.log(this.currentUrl); 
} 

in den Konsolen ich die Meldung undefined bekommen. Die Frage ist also, wie kann ich das Ergebnis der Chrome-Erweiterungsfunktion meiner TypeScript-Variablen zuweisen?

+0

@vanloc ich Chrome-Erweiterung bin die Schaffung so window.location mich einfach zurück „Chrom-Erweiterung: // ... . " –

+0

Rechts. Es ist in deinem Fall nicht korrekt. Ich habe diesen Kommentar entfernt. – vanloc

Antwort

0

Die Methode chrome.tabs.getSelected() ist jetzt veraltet.

Die empfohlene Methode zum Abrufen der URL des aktuellen Tabs lautet chrome.tabs.query().

Ein Beispiel Nutzung:

chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) { 
    var url = tabs[0].url; 
}); 

Dies erfordert, dass Sie Zugriff auf die chrome.tabs API in Ihrer extension manifest anfordern:

"permissions": [ ... 
    "tabs" 
] 

Es ist wichtig, dass die Definition des "aktuellen Tab" beachten kann sich je nach den Anforderungen Ihrer Erweiterung unterscheiden.

Die Einstellung lastFocusedWindow: true in der Abfrage ist geeignet, wenn Sie auf die aktuelle Registerkarte im fokussierten Fenster des Benutzers (normalerweise das oberste Fenster) zugreifen möchten.

Einstellung currentWindow: true ermöglicht es Ihnen, die aktuelle Registerkarte in dem Fenster zu erhalten, in dem der Code Ihrer Erweiterung gerade ausgeführt wird. Dies kann beispielsweise nützlich sein, wenn Ihre Erweiterung ein neues Fenster/Popup erstellt (Fokus wird geändert), aber dennoch auf Registerinformationen aus dem Fenster zugreifen möchte, in dem die Erweiterung ausgeführt wurde.

Ich habe in diesem Beispiel lastFocusedWindow: true verwendet, weil Google Fälle nennt, in denen currentWindowmay not always be present.

Sie sind frei, um Ihre Registerkarte Abfrage alle Eigenschaften verfeinern hier definiert werden: chrome.tabs.query

+0

Ich habe die Berechtigung in meine Manifest-Datei hinzugefügt und es ist immer noch kein Glück ... –

+0

Wenn ich console.log() in chrome.tabs.query Funktion hinzufügen, drucken Sie die URL, aber nach dem Ende der Funktion wird es undefined .. –

+0

Wenn die URL "nicht definiert" ist, versuchen Sie, Ihre Erweiterung von chrome: // extensions neu zu laden. Dadurch wird die Konfiguration der Erweiterung neu geladen und die neu hinzugefügte Berechtigung "Tabs" angewendet. – vanloc

Verwandte Themen