Domanda

Mi sto divertendo con l'estensione di Google Chrome e voglio solo sapere come posso archiviare l'URL della scheda corrente in una variabile?

È stato utile?

Soluzione

Aggiornare: Il chrome.tabs.getSelected() Il metodo è ora deprecato.

Il modo consigliato per ottenere l'URL della scheda corrente è l'uso chrome.tabs.query().

Un utilizzo di esempio:

chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
    var url = tabs[0].url;
});

Ciò richiede di richiedere l'accesso a chrome.tabs API nel tuo manifesto di estensione:

"permissions": [ ...
   "tabs"
]

È importante notare che la definizione della "scheda corrente" può differire a seconda delle esigenze di estensione.

Ambientazione lastFocusedWindow: true Nella query è appropriata quando si desidera accedere alla scheda corrente nella finestra focalizzata dell'utente (in genere la finestra più in alto).

Ambientazione currentWindow: true Ti consente di ottenere la scheda corrente nella finestra in cui è attualmente in esecuzione il codice dell'estensione. Ad esempio, questo potrebbe essere utile se la tua estensione crea una nuova finestra / popup (modifica della messa a fuoco), ma desidera comunque accedere alle informazioni sulla scheda dalla finestra in cui è stata eseguita l'estensione.

Ho scelto di usare lastFocusedWindow: true In questo esempio, perché Google chiama casi in cui currentWindow potrebbe non essere sempre presente.

Sei libero di perfezionare ulteriormente la tua query su scheda utilizzando una qualsiasi delle proprietà definite qui: Chrome.tabs.Query

Altri suggerimenti

Un amico risponde alla mia domanda.

Innanzitutto, devi impostare le autorizzazioni per l'API della tab:

"permissions": [
    "tabs"
]

E per conservare l'URL:

chrome.tabs.getSelected(null,function(tab) {
    var tablink = tab.url;
});

Altre risposte presumono che tu voglia conoscerlo da uno script popup o di sfondo.

Nel caso in cui tu voglia conoscere l'URL attuale Da uno script di contenuti, si applica lo standard JS Way:

window.location.toString()

Puoi usare le proprietà di window.location Per accedere a singole parti dell'URL, come host, protocollo o percorso.

Il problema è che Chrome.tabs.getSelected è asincrono. Questo codice seguente non funzionerà generalmente come previsto. Il valore di "TableNink" sarà ancora indefinito quando è scritto sulla console perché GetSelected non ha ancora invocato il callback che ripristina 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 utilizzerai il valore in una funzione e ne avrai invocato da GetSelected. In questo modo sei garantito per avere sempre un valore impostato, perché il tuo codice dovrà attendere che il valore venga fornito prima che venga eseguito.

Prova qualcosa come:

chrome.tabs.getSelected(null, function(tab) {
    myFunction(tab.url);
});

function myFunction(tablink) {
  // do stuff here
  console.log(tablink);
}

Ciao, ecco un esempio di Google Chrome che invia un'e -mail al sito corrente a un amico. L'idea di base dietro è ciò che vuoi ... prima di tutto prende il contenuto della pagina (non interagendo per te) ... in seguito ottiene l'URL (<- buona parte)

Inoltre, è un bel esempio di codice di lavoro, che preferisco motivi rispetto ai documenti di lettura.

Può essere trovato qui:Invia questa pagina via email

Per coloro che usano il context menu api, i documenti non sono immediatamente chiari su come ottenere informazioni sulla scheda.

  chrome.contextMenus.onClicked.addListener(function(info, tab) {
    console.log(info);
    return console.log(tab);
  });

https://developer.chrome.com/extensions/contextmenus

Devi controllare questo.

Html

<button id="saveActionId"> Save </button>

manifest.json

  "permissions": [
    "activeTab",
    "tabs"
   ]

JavaScript
Il codice seguente salverà tutti gli URL della finestra attiva nell'oggetto JSON come parte del clic del pulsante.

var saveActionButton = document.getElementById('saveActionId');
saveActionButton.addEventListener('click', function() {
    myArray = [];
    chrome.tabs.query({"currentWindow": true},  //{"windowId": targetWindow.id, "index": tabPosition});
    function (array_of_Tabs) {  //Tab tab
        arrayLength = array_of_Tabs.length;
        //alert(arrayLength);
        for (var i = 0; i < arrayLength; i++) {
            myArray.push(array_of_Tabs[i].url);
        }
        obj = JSON.parse(JSON.stringify(myArray));
    });
}, false);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top