Mi sto divertendo con l'estensione Google Chrome e voglio solo sapere come posso archiviare l'URL della scheda corrente in una variabile?Come posso ottenere l'URL della scheda corrente da un'estensione Google Chrome?
risposta
Un amico risponde alla mia domanda.
In primo luogo, devi impostare le autorizzazioni per la scheda API:
"permissions": [
"tabs"
]
E per memorizzare l'URL:
chrome.tabs.getSelected(null,function(tab) {
var tablink = tab.url;
});
Hi qui è un campione di Google Chrome, che messaggi di posta elettronica del sito corrente ad un amico L'idea di base che sta dietro è ciò che vuoi ... prima di tutto recupera il contenuto della pagina (non interessa per te) ... in seguito ottiene l'URL (< - buona parte)
Inoltre è un bel esempio di codice funzionante, che preferisco sfuggendo alla lettura dei documenti.
può essere trovato qui: Email this page
Il problema è che chrome.tabs.getSelected è asincrona. Questo codice di seguito generalmente non funzionerà come previsto. Il valore di 'tablink' sarà ancora indefinito quando è scritto nella console perché getSelected non ha ancora invocato la callback che azzera il valore:
var tablink;
chrome.tabs.getSelected(null,function(tab) {
tablink = tab.url;
});
console.log(tablink);
La soluzione è quella di avvolgere il codice in cui si prevede di utilizzare il valore in una funzione e avere invocato da getSelected. In questo modo è garantito avere sempre un valore impostato, poiché il codice dovrà attendere il valore da fornire prima che venga eseguito.
provare qualcosa di simile:
chrome.tabs.getSelected(null, function(tab) {
myFunction(tab.url);
});
function myFunction(tablink) {
// do stuff here
console.log(tablink);
}
Grazie per il codice, questo ha funzionato per me, "schede" deve essere aggiunto alle autorizzazioni nel file manifest.json "permessi": [ "schede" ] –
Anche questo funziona come un fascino: [Ottenere la finestra corrente su un popup (estensione google chrome)] (http://stackoverflow.com/questions/3030738/getting-current-window-on-a-popup-google-chrome-extension) – chemark
E come ottenere link di tutte le schede aperte – Enve
Update: Il metodo chrome.tabs.getSelected()
è ora sconsigliato.
Il modo consigliato per ottenere l'URL della scheda corrente è utilizzare chrome.tabs.query()
.
Un esempio d'uso:
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var url = tabs[0].url;
});
Ciò richiede che si richiede l'accesso al chrome.tabs
API nel extension manifest:
"permissions": [ ...
"tabs"
]
E 'importante notare che la definizione del "scheda corrente" potrebbe differire in base alle esigenze della tua estensione.
L'impostazione lastFocusedWindow: true
nella query è appropriata quando si desidera accedere alla scheda corrente nella finestra focalizzata dell'utente (in genere la finestra più in alto).
L'impostazione currentWindow: true
consente di ottenere la scheda corrente nella finestra in cui è in esecuzione il codice dell'interno. Ad esempio, ciò potrebbe essere utile se la tua estensione crea una nuova finestra/popup (cambiando lo stato attivo), ma desidera comunque accedere alle informazioni della scheda dalla finestra in cui è stata eseguita l'estensione.
Ho scelto di utilizzare lastFocusedWindow: true
in questo esempio, perché Google chiama casi in cui currentWindow
may not always be present.
Siete liberi di affinare ulteriormente la query scheda utilizzando una qualsiasi delle proprietà definite qui: chrome.tabs.query
Perché l'URL è sempre indefinito? – nnm
Se l'URL non è definito, prova a ricaricare l'estensione da chrome: // extensions Ciò ricaricherà la configurazione dell'estensione e applicherà l'autorizzazione "schede" appena aggiunta. L'URL – flashbackzoo
non è definito perché http://stackoverflow.com/questions/28786723/why-doesnt-chrome-tabs-query-return-the-tabs-url-when-called-using-requirejs (risposta: chiudi la finestra degli strumenti dev o passare a Window corrente invece di lastFocusedWindow) – kspearrin
Per coloro che utilizzano il context menu api
, i documenti non sono immediatamente chiaro su come ottenere le informazioni scheda.
chrome.contextMenus.onClicked.addListener(function(info, tab) {
console.log(info);
return console.log(tab);
});
Bisogna controllare this.
HTML
<button id="saveActionId"> Save </button>
manifest.json
"permissions": [
"activeTab",
"tabs"
]
JavaScript
Il codice qui sotto salverà tutti gli URL di finestra attiva in oggetto JSON come parte del pulsante clic.
La mia estensione di Chrome per il salvataggio degli URL nelle finestre attive è https://chrome.google.com/webstore/detail/tabstore-plugin/jngplpdonggccbjlmbphlbancacmpmpp –
Altre risposte presuppongono che vogliate conoscerlo da un popup o da uno script in background.
Nel caso in cui si desidera conoscere l'URL corrente da uno script contenuti, il modo standard JS applica:
window.location.toString()
È possibile utilizzare le proprietà di window.location
per accedere le singole parti del URL, come ospite , protocollo o percorso.
thumb up, la soluzione più semplice. – dalvarezmartinez1
Ottima risposta. Tutto quello che volevo era 'window.location.host' per vedere se sono in" stackoverflow.com "o no. – Salyangoz
- 1. Cambia scheda corrente da notifica nell'estensione Google Chrome
- 2. Come posso rilevare il tipo mime della scheda corrente in un'estensione Google Chrome?
- 3. Accesso all'oggetto DOM della scheda corrente da "popup.html"?
- 4. Chiudi scheda corrente
- 5. Estensione Chrome: ottieni la scheda corrente dal popup
- 6. come decomprimere resources.pak da google chrome?
- 7. Posso ottenere audio.currentTime ma non impostarlo (in Google Chrome)
- 8. Come posso aprire Google Chrome Console da JavaScript?
- 9. Controllo scheda come le schede di Google Chrome?
- 10. Come posso ottenere il nome della subroutine corrente in Perl?
- 11. Come posso ottenere il nome della directory corrente in Javascript?
- 12. Come posso ottenere il nome della directory corrente in Ruby?
- 13. Chiusura della scheda personalizzata di Chrome
- 14. In quale scheda è attivo "Google Chrome Helper"?
- 15. Come modificare il titolo della scheda attuale utilizzando Chrome Extension
- 16. Come ottenere la lunghezza della risposta corrente da un http.ResponseWriter
- 17. Google Chrome Plugin: come ottenere il dominio dall'URL (tab.url)
- 18. Come posso ottenere l'orientamento dello schermo corrente?
- 19. Avviare un'applicazione esterna da un'estensione Google Chrome?
- 20. Come eseguire chiamate REST da Google Chrome
- 21. Estensioni Google Chrome - Apri una nuova scheda quando fai clic sull'icona della barra degli strumenti
- 22. come posso ottenere l'ora corrente in C#?
- 23. Come posso ottenere la directory utente corrente?
- 24. Lettura della smartcard da chrome dopo la caduta di NPAPI
- 25. Come ottenere il dominio della richiesta corrente?
- 26. Come ottenere il nome della funzione corrente?
- 27. windows chrome Aggiorna scheda 0 (o scheda corrente) tramite riga di comando
- 28. Aprire un'app Chrome in una scheda
- 29. Schede dell'interfaccia utente jQuery: visualizza l'indice della scheda corrente
- 30. Ottieni l'URL della scheda in primo piano da Chrome su OS X?
La seconda parte del codice è per il caso di un file popup – Axiol
Il motivo per cui è solo per il popup (azione della pagina, azione del browser) è perché l'invio di un "null" nel primo parametro. http://code.google.com/chrome/extensions/tabs.html#method-getSelected I documenti dichiarano che il primo parametro è windowId, se si desidera utilizzarlo nelle opzioni o nella pagina di sfondo, è necessario per inserire l'id della finestra o si otterrà la scheda corrente la visualizzazione che non è definita, le opzioni rispettivamente. –
sì, funziona, ma non sono sicuro del perché il metodo chrome.tabs.getSelected non sia stato trovato nel documento di riferimento. – swimmingfisher