2010-03-09 7 views
17

Ich habe eine Chrome-Erweiterung erstellt und verwaltet, um die popup.html Datei mit window.open zu öffnen. aber ich es in einem neuen Tab zu öffnen, habe ich viele verschiedene Wege versucht, einschließlich:Chrome Erweiterung: onclick Erweiterung Symbol, öffnen Sie popup.html in der neuen Registerkarte

<script type="text/javascript" language="JavaScript"> 
    chrome.tabs.create('url': 'popup.html'); 

Bin ich nur den Code an der falschen Stelle platziert oder ist es der falsche Code überhaupt?

+0

diese Antwort versuchen: http://stackoverflow.com/a/36996729/5309803 ... es funktioniert für mich –

Antwort

20

Warum möchten Sie die Popup.html in einem neuen Tab öffnen? Sie sollten dafür eine andere Seite erstellen. Wenn Sie die popup.html in einem neuen Tab öffnen möchten, müssten Sie die Erweiterungs-URL eingeben.

http://code.google.com/chrome/extensions/extension.html#method-getURL

chrome.tabs.create({'url': chrome.extension.getURL('popup.html')}, function(tab) { 
    // Tab opened. 
}); 
+4

Dieser Ausschnitt muss von der Hintergrundseite aufgerufen werden. Wenn Sie also versuchen, die Registerkarte aus einem Inhaltsskript zu öffnen, senden Sie eine Nachricht an die Hintergrundseite, die diesen Code auslöst. Hier ist die entsprechende Seite zum Senden von Nachrichten auf diese Weise: http://code.google.com/chrome/extensions/messaging.html –

+2

Ich musste die 'URL' umbrechen: chrome.extension.getURL ('popup.html') in Klammern. {'url': chrome.extension.getURL ('popup.html')} – AdamB

2

Verwenden chrome.tabs.create (Objekteigenschaften, Callback-Funktion), wie auf http://code.google.com/chrome/extensions/tabs.html beschrieben

Die Objekteigenschaften Felder für windowId, index, URL und ausgewählte enthalten könnten. Die optionale Callback-Funktion empfängt ein Tab-Objekt der neu erstellten Registerkarte.

So das einfachste Beispiel einen neuen Tab im aktuellen Fenster zu erstellen und es würde so aussehen lassen ausgewählt:

chrome.tabs.create({'url': chrome.extension.getURL('popup.html'), 'highlighted': 'true'}); 

nicht sicher, warum Sie die popup.html in einem neuen Tab zeigen möchten, aber ich finde es sehr nützlich beim Entwickeln/Debuggen meiner Erweiterung ... es ist ziemlich schmerzhaft, dass auf der Erweiterungsseite "normalerweise" nur ein Link zur Hintergrundseite ist.

Würde gerne wissen, wie es zu öffnen in einem neuen Fenster und vielleicht in einem Kiosk-Modus ;-)

+2

Beachten Sie, dass 'selected' nun veraltet ist. Verwenden Sie stattdessen "hervorgehoben". – Brad

6

Jetzt können Sie Event Pages verwenden popup.html in neuen Tab zu öffnen, wenn Erweiterungssymbol, ohne eine angeklickt wird default_popup Seite.

manifestieren:

"background": { 
    "scripts": ["background.js"], 
    "persistent": false 
} 

js:

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.create({'url': chrome.extension.getURL('popup.html'), 'selected': true}); 
}); 
+3

Dies öffnet neue Registerkarte bei jedem Klick. Es ist wahrscheinlich ratsam, zu überprüfen, ob das Erweiterungspopup bereits geöffnet ist, und wenn ja, wählen Sie es einfach aus –

Verwandte Themen