So ändern Sie den aktuellen URL -Standort in Chrom über Erweiterungen
-
19-09-2019 - |
Frage
Ich möchte eine Erweiterung erstellen, die den Benutzer auf eine andere Website weiterleitet, wenn er auf die Erweiterungsschaltfläche klickt. Bisher habe ich nur Erweiterungen gesehen, die für jeden Klick eine neue Registerkarte erstellen.
Ist es möglich, den Benutzer mithilfe der aktiven Registerkarte aktiver auf eine andere Website umzuleiten?
Ich habe so etwas ausprobiert:
chrome.browserAction.onClicked.addListener(function(tab) {
var url = "https://www.mipanga.com/Content/Submit?url="
+ encodeURIComponent(tab.url)
+ "&title=" + encodeURIComponent(tab.title);
document.location.href = url; // <-- this does not work
});
Lösung
Aufmerksamkeit: Wenn Sie Cross-Browser-Erweiterungen entwickeln (ich hoffe, Sie tun es!), Empfehle ich, dass Sie verwenden
chrome.tabs.query()
. Bitte sehen Sie Jean-Marc Amons Antwort für mehr Informationen. Diese Antwort funktioniert immer noch sowohl in Firefox als auch in Chrom, aberquery()
wird häufiger verwendet, hat mehr Optionen und funktioniert in Hintergrundseiten und Popup -Ansichten.
Von dem chrome.tabs
API, Sie können verwenden getCurrent()
oder query()
.
ich bevorzuge getCurrent
Es kann jedoch nicht aus einem Nicht-TAB-Kontext aufgerufen werden (z. B. eine Hintergrundseite oder eine Popup-Ansicht). Wenn dies ein Problem für Sie ist, sollten Sie versuchen zu verwenden query
stattdessen. Jean-Marc Amon Antworten Im Folgenden ist ein wunderbares Beispiel dafür, wie Sie in diesem Fall die aktive Registerkarte erhalten (vergessen Sie nicht, ihn zu verbessern!).
Sobald Sie die aktuelle Registerkarte haben, passieren Sie einfach update()
.
chrome.tabs.getCurrent(function (tab) {
//Your code below...
var tabUrl = encodeURIComponent(tab.url);
var tabTitle = encodeURIComponent(tab.title);
var myNewUrl = "https://www.mipanga.com/Content/Submit?url=" + tabUrl + "&title=" + tabTitle;
//Update the url here.
chrome.tabs.update(tab.id, {url: myNewUrl});
});
NB: Um diese Funktionalität zu verwenden, sind Sie muss Stellen Sie sicher, dass Sie das haben tabs
Erlaubnis in Ihrem aktiviert manifest.json
Datei:
"permissions": [
"tabs"
],
Andere Tipps
Sie können auch Chrome.tabs.Query verwenden
chrome.tabs.query({currentWindow: true, active: true}, function (tab) {
chrome.tabs.update(tab.id, {url: your_new_url});
});
Das chrome.tabs.update
Die Methode (zumindest ab Januar 2017) wird automatisch auf der aktuellen aktiven Registerkarte "TAB -ID" ausgeführt.
Dies hat den zusätzlichen Vorteil, das nicht zu verlangen tabs
Genehmigung. Erweiterungen mit dieser Erlaubnis warnen dem Benutzer, dass er den Browserhistorium lesen kann. Sie sollten also vermeiden, dass Sie danach fragen, ob Sie nicht müssen.
Das Ändern der URL der aktuellen Registerkarte ist so einfach wie das Schreiben:
chrome.tabs.update(undefined, {url: 'http://example.com'});
Oder wie in den Kommentaren von Farwayer erwähnt wird, müssen Sie überhaupt nicht zwei Argumente vorlegen.
chrome.tabs.update({url: 'http://example.com'});