2010-05-09 12 views
30

Fondamentalmente sulla mia finestra (quando si fa clic sull'icona) dovrebbe aprire e mostrare l'URL della scheda e accanto ad essa voglio dire "Salva", lo salverà sul localStorage e verrà visualizzato sotto nell'area dei collegamenti salvati.Ottieni l'URL e salvalo | Chrome Extension

Ti piace questa:

alt text http://i42.tinypic.com/dma7x5.png

Qualcosa come preferiti :)

+1

Nota: tutte le risposte suggeriscono di utilizzare 'chrome.tabs.getSelected'. Questo metodo API è stato deprecato, tuttavia è necessario utilizzare 'chrome.tabs.query'. Vedere [Come ottenere l'URL della scheda attualmente aperta nel popup di azione della mia pagina?] (Http://stackoverflow.com/questions/10413911/how-to-get-the-correntemente-aperto-tabs-url-in-my-page-action-popup/10417327 # 10417327) –

risposta

48

Se vuoi fare qualcosa del genere, lo fai facilmente con l'API per estensioni di Chrome. Le aree da cercare sono:

Ora, il primo passo è quello di creare il file popup.html e ricordare che è transitorio, cioè vive solo quando si fa clic sull'azione del browser, quindi muore se esce (si chiude). Quello che sto cercando di dire, se hai un sacco di calcoli e vuoi che succeda in background e accada anche se il popup è chiuso, sposta tutto su background page. E nel tuo popup, puoi facilmente accedere alla pagina di sfondo usando chrome.extension.getBackgroundPage()

All'interno del tuo popup.html, dovresti ottenere l'URL della scheda corrente, per fare ciò, l'API Tab. ha una funzione "getSelected" che ti permette di ottenere il Tab object per la scheda selezionata.

Quindi qualcosa di simile:

popup.html

<html> 
<body> 
<p id="currentLink">Loading ...</p> 
<hr /> 
<ul id="savedLinks"></ul> 
<script type="text/javascript" src="popup.js"></script> 
</body> 
</html> 

popup.js

chrome.tabs.getSelected(null, function(tab) { 
    document.getElementById('currentLink').innerHTML = tab.url; 
}); 

Il motivo per cui non è possibile inserire il codice JavaScript nel file HTML è di limitazione di Chrome per proteggere i propri utenti di attacchi JavaScript:

script in linea e gestori di eventi annullato

Ora questo ti permetterà di mostrare l'Url nel popup per la pagina corrente come azione del browser. Il prossimo passo è utilizzare semplici funzionalità HTML5 come localStorage o Webdatabase (a mio avviso, sarà meglio). Per memorizzare le pagine salvate, puoi renderle sulla pagina SavedLinks come ho fatto per il currentLink.

Buona fortuna!

+0

Codice molto utile per iniziare, farò l'archiviazione, grazie :) – Jamie

+0

Dai un'occhiata al webdatabase HTML5 (è meglio per il tuo scenario) –

+4

Lo script sopra funziona solo se hai il permesso impostato nel manifest: "permessi": [ "tab" ] – ina

10

Per ottenere l'URL corrente, è necessario per ottenere la scheda corrente e quindi estrarre tutti i paramenters.

per l'utilizzo della scheda corrente, chrome.tabs.getSelected(). Poi, per andare a prendere i parametri dall'oggetto scheda, fare riferimento tabs api

tuo frammento di codice dovrebbe essere simile,

chrome.tabs.getSelected(null, function(tab) { 
    //properties of tab object 
    tabId = tab.id; 
    tabUrl = tab.url; 

    //rest of the save functionality. 
}); 

avrete anche bisogno di dichiarare l'autorizzazione "schede" in palese del proprio interno da usare l'API delle schede. Ad esempio

{ 
    "name": "My extension", 
    ... 
    "permissions": [ 
    "tabs" 
    ], 
    ... 
} 
13

Desidero aggiornare questa risposta, poiché l'API è stata modificata.

Il metodo chrome.tabs.getSelected() è ora obsoleto. Il metodo consigliato di ottenere l'URL della scheda corrente è quella di utilizzare chrome.tabs.query():

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

Questo richiede comunque di richiedere l'accesso al chrome.tabs API nel estensione manifest:

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

Si può leggere di più circa la deprecazione qui: chrome.tabs.getSelected()

Spero che questo aiuti!

Problemi correlati