Frage

Ich habe Spaß mit Google Chrome -Erweiterung und möchte nur wissen, wie ich die URL der aktuellen Registerkarte in einer Variablen speichern kann.

War es hilfreich?

Lösung

Aktualisieren: Das chrome.tabs.getSelected() Die Methode ist jetzt veraltet.

Die empfohlene Methode, um die URL der aktuellen Registerkarte zu erhalten chrome.tabs.query().

Ein Beispielverbrauch:

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

Dies erfordert, dass Sie Zugriff auf die anfordern chrome.tabs API in deinem Verlängerung manifestiert:

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

Es ist wichtig zu beachten, dass die Definition Ihrer "aktuellen Registerkarte" je nach Anforderungen Ihrer Erweiterung abweichen kann.

Einstellung lastFocusedWindow: true In der Abfrage ist angemessen, wenn Sie im fokussierten Fenster des Benutzers auf die aktuelle Registerkarte des Benutzers zugreifen möchten (normalerweise im obersten Fenster).

Einstellung currentWindow: true Ermöglicht Ihnen die aktuelle Registerkarte im Fenster, in dem der Code Ihrer Erweiterung derzeit ausgeführt wird. Dies kann beispielsweise nützlich sein, wenn Ihre Erweiterung ein neues Fenster / ein neues Popup (Änderungsfokus) erstellt, aber dennoch über die Registerkarteninformationen aus dem Fenster zugreifen möchte, in dem die Erweiterung ausgeführt wurde.

Ich habe mich entschieden zu verwenden lastFocusedWindow: true In diesem Beispiel, weil Google Fälle aufruft, in denen currentWindow kann nicht immer vorhanden sein.

Sie können Ihre Registerkartenabfrage mithilfe einer der hier definierten Eigenschaften weiter verfeinern: chrome.tabs.Query

Andere Tipps

Ein Freund antwortet auf meine Frage.

Zunächst müssen Sie die Berechtigungen für die Tab -API festlegen:

"permissions": [
    "tabs"
]

Und um die URL zu speichern:

chrome.tabs.getSelected(null,function(tab) {
    var tablink = tab.url;
});

Andere Antworten gehen davon aus, dass Sie es aus einem Popup- oder Hintergrundskript wissen möchten.

Falls Sie die aktuelle URL kennenlernen möchten aus einem Inhaltskript, der Standard -JS -Weg gilt:

window.location.toString()

Sie können Eigenschaften von verwenden window.location Zugriff auf einzelne Teile der URL wie Host, Protokoll oder Pfad.

Das Problem ist, dass chrome.tabs.getSelected asynchron ist. Dieser folgende Code funktioniert im Allgemeinen nicht wie erwartet. Der Wert von "Tablink" wird immer noch nicht definiert, wenn er in die Konsole geschrieben wird, da GetSelected den Rückruf noch nicht aufgerufen hat, der den Wert zurücksetzt:

var tablink;
chrome.tabs.getSelected(null,function(tab) {
    tablink = tab.url;
});
console.log(tablink);

Die Lösung besteht darin, den Code zu wickeln, in dem Sie den Wert in einer Funktion verwenden und diese von getSelected aufrufen. Auf diese Weise haben Sie garantiert immer einen Wertsatz, da Ihr Code darauf warten muss, dass der Wert bereitgestellt wird, bevor er ausgeführt wird.

Versuchen Sie so etwas wie:

chrome.tabs.getSelected(null, function(tab) {
    myFunction(tab.url);
});

function myFunction(tablink) {
  // do stuff here
  console.log(tablink);
}

Hallo, hier ist ein Google Chrome -Beispiel, das die aktuelle Site an einen Freund per E -Mail senden. Die Grundidee dahinter ist das, was Sie wollen ... Zunächst holt sie den Inhalt der Seite (nicht für Sie miteinander) ... Danach erhält es die URL (<- guter Teil)

Zusätzlich ist es ein gutes Beispiel für Arbeitscode, das ich zeitweise vorgezogen habe, Dokumente zu lesen.

Kann hier gefunden werden:E -Mail auf diese Seite

Für diejenigen, die die verwenden context menu api, Die Dokumente sind nicht sofort klar, wie die Registerkarteninformationen erhalten werden können.

  chrome.contextMenus.onClicked.addListener(function(info, tab) {
    console.log(info);
    return console.log(tab);
  });

https://developer.chrome.com/extensions/contextmenus

Sie müssen nachsehen Dies.

Html

<button id="saveActionId"> Save </button>

Manifest.json

  "permissions": [
    "activeTab",
    "tabs"
   ]

JavaScript
Der folgende Code speichert alle URLs des aktiven Fensters in JSON -Objekt als Teil der Schaltfläche Klick.

var saveActionButton = document.getElementById('saveActionId');
saveActionButton.addEventListener('click', function() {
    myArray = [];
    chrome.tabs.query({"currentWindow": true},  //{"windowId": targetWindow.id, "index": tabPosition});
    function (array_of_Tabs) {  //Tab tab
        arrayLength = array_of_Tabs.length;
        //alert(arrayLength);
        for (var i = 0; i < arrayLength; i++) {
            myArray.push(array_of_Tabs[i].url);
        }
        obj = JSON.parse(JSON.stringify(myArray));
    });
}, false);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top