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
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