Ich habe Spaß mit der Google Chrome-Erweiterung und möchte nur wissen, wie ich die URL des aktuellen Tabs in einer Variablen speichern kann.
Ich habe Spaß mit der Google Chrome-Erweiterung und möchte nur wissen, wie ich die URL des aktuellen Tabs in einer Variablen speichern kann.
Verwenden Sie chrome.tabs.query()
wie folgt:
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
let url = tabs[0].url;
// use `url` here inside the callback because it's asynchronous!
});
Dies erfordert, dass Sie chrome.tabs
in Ihrem Erweiterungsmanifest Zugriff auf die API anfordern :
"permissions": [ ...
"tabs"
]
Es ist wichtig zu beachten, dass die Definition Ihrer "aktuellen Registerkarte" je nach den Anforderungen Ihrer Erweiterung unterschiedlich sein kann.
Die Einstellung lastFocusedWindow: true
in der Abfrage ist angemessen, wenn Sie auf die aktuelle Registerkarte im fokussierten Fenster des Benutzers zugreifen möchten (normalerweise das oberste Fenster).
Mit der Einstellung currentWindow: true
können Sie die aktuelle Registerkarte in dem Fenster abrufen, 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 ändern), aber dennoch über das Fenster, in dem die Erweiterung ausgeführt wurde, auf Registerkarteninformationen zugreifen möchte.
Ich habe mich für lastFocusedWindow: true
dieses Beispiel entschieden, da Google Fälle aufruft, in denen dies currentWindow
möglicherweise nicht immer der Fall ist .
Sie können Ihre Tab-Abfrage mithilfe einer der hier definierten Eigenschaften weiter verfeinern: chrome.tabs.query
Warnung!
chrome.tabs.getSelected
ist veraltet . Bitte verwenden Siechrome.tabs.query
wie in den anderen Antworten gezeigt.Zunächst müssen Sie die Berechtigungen für die API in manifest.json festlegen:
Und um die URL zu speichern:
quelle
chrome.tabs.getSelected
ist undefiniert, soll ich es in einer separaten Frage stellen?chrome.tabs.getSelected
Methode ist veraltet, die richtige Methode ist in der folgenden Antwort aufgeführt .Bei anderen Antworten wird davon ausgegangen, dass Sie dies anhand eines Popup- oder Hintergrundskripts wissen möchten.
Wenn Sie die aktuelle URL aus einem Inhaltsskript kennen möchten , gilt die Standard-JS-Methode:
Mit den Eigenschaften von können Sie
window.location
auf einzelne Teile der URL zugreifen, z. B. Host, Protokoll oder Pfad.quelle
window.location.host
sehen, ob ich bei "stackoverflow.com" bin oder nicht.match:"<all_urls>"
Situation im Abschnitt content_script, und Chrome empfiehlt <all_urls> nicht.contentScript.js
und nicht in der ausführenbackground.js
. Übergeben Sie einfach alle Daten, die Sie aus der URL gefiltert haben, an die Nachricht anbackground.js
. Beispiel:let message = { type: "fetchVideoDate", id: getVideoId() };
wogetVideoId()
enthält eine Ausführung vonwindow.location.toString()
. Andernfalls erhalten Sie einigechrome://temp_background_file.html
Daten. Beachten Sie auch, dass manchmalmessage
aufgerufen wirdrequest
.Das Problem ist, dass chrome.tabs.getSelected asynchron ist. Dieser Code unten funktioniert im Allgemeinen nicht wie erwartet. Der Wert von 'tablink' bleibt beim Schreiben in die Konsole undefiniert, da getSelected den Rückruf, der den Wert zurücksetzt, noch nicht aufgerufen hat:
Die Lösung besteht darin, den Code so zu verpacken, dass Sie den Wert in einer Funktion verwenden und diesen von getSelected aufrufen lassen. Auf diese Weise ist garantiert immer ein Wert festgelegt, da Ihr Code warten muss, bis der Wert bereitgestellt wird, bevor er ausgeführt wird.
Versuchen Sie etwas wie:
quelle
Hallo, hier ist ein Google Chrome-Beispiel, das die aktuelle Website per E-Mail an einen Freund sendet. Die Grundidee dahinter ist, was Sie wollen ... zuerst wird der Inhalt der Seite abgerufen (was für Sie nicht interessant ist) ... danach wird die URL abgerufen (<- guter Teil)
Außerdem ist es ein schönes funktionierendes Codebeispiel, das ich lieber als Dokumente lese.
Hier finden Sie: E-Mail an diese Seite
quelle
Diese Lösung ist bereits getestet.
Legen Sie die Berechtigungen für die API in manifest.json fest
Beim ersten Laden Aufruffunktion. https://developer.chrome.com/extensions/tabs#event-onActivated
Bei Änderungsaufruffunktion. https://developer.chrome.com/extensions/tabs#event-onSelectionChanged
die Funktion zum Abrufen der URL
quelle
Für diejenigen, die das verwenden
context menu api
, ist in den Dokumenten nicht sofort klar, wie Registerkarteninformationen abgerufen werden können.https://developer.chrome.com/extensions/contextMenus
quelle
Sie haben auf überprüfen diese .
HTML
manifest.json
JavaScript
Der folgende Code speichert alle URLs des aktiven Fensters im Rahmen eines Schaltflächenklicks im JSON-Objekt.
quelle