2010-07-06 16 views

risposta

74

Questo non è vero per le nuove app di Chrome.

più recenti applicazioni cromate con manifest_version: 2 richiede le linguette essere aperti come:


chrome.browserAction.onClicked.addListener(function(activeTab) 
{ 
    var newURL = "http://www.youtube.com/watch?v=oHg5SJYRHA0"; 
    chrome.tabs.create({ url: newURL }); 
}); 

+0

Questa è la risposta migliore, più attuale e più accurata, FYI –

+5

di quale file è necessario inserire questo codice .. è principale. js o popup.html ??? –

+2

@DehanWjiesekara Inseritelo ad es. background.js e ho "" background ": {" scripts ": [" background.js "]}' nel tuo manifest. – simonp

49

Bene, nel extensions docs, afferma in manifest, è necessario includere "schede" come autorizzazione. Lo stesso modo di spiegare l'applicazione ciao mondo:

Manifest File:

{ 
    "name": "My Extension", 
    "version": "1.0", 
    "description": "Opens up a local webpage", 
    "icons": { "128": "icon_128.png" }, 
    "background_page": "bg.html", 
    "browser_action": { 
    "default_title": "", 
    "default_icon": "icon_19.png" 
    }, 
    "permissions": [ 
    "tabs" 
    ], 
} 

All'interno del background page, si ascolta l'evento clic del mouse sull'azione browser.

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.create({'url': chrome.extension.getURL('f.html')}, function(tab) { 
    // Tab opened. 
    }); 
}); 

Come hai notato sopra, vedrai che ho usato la domanda che hai visto nell'altro post. Nota, questo non è testato, ma credo che dovrebbe funzionare.

+1

Attenzione che l'aggiunta di autorizzazioni "schede" mostrerà un avviso di autorizzazione "Leggi la cronologia di navigazione" all'utente al momento dell'installazione. I documenti dicono che la maggior parte di 'chrome.tabs' non richiede questa autorizzazione https://developer.chrome.com/extensions/tabs Perché non ho prestato molta attenzione a questo, ho perso di recente centinaia di utenti da https://chrome.google.com/webstore/detail/inbox-by-gmail-checker/mpjmeeikbbgccbjkbfabocnjcaejdpmj – Joe

4

chrome.tabs.create bisogno del permesso del "schede".

Semplicemente usando window.open in estensione senza bisogno di alcun permesso. e il codice è più breve. Suggerisco questa soluzione.

window.open(url,'_blank'); 
+0

ho usato lo stesso codice nella mia estensione per aprire una nuova scheda al clic del pulsante di notifica. ma ora dopo 3 mesi sto ricevendo aw..sap errore di pagina quando si fa clic su quel pulsante. hai idea del perché sia ​​successo? P.s: funziona bene se uso un altro URL come: www.google.com ma non funziona con il mio sito. – Sona

+0

Questo sembra funzionare per me (anche se l'ho provato solo in un'estensione disaggregata locale su cui sto lavorando). – simonp

Problemi correlati