2011-12-18 11 views
9

Sto sviluppando un'estensione di Chrome che ha bisogno di impacchettare un file XML (una struttura dati trie) e di essere in grado di leggere quel file dallo script di contenuto. Quindi lo script di contenuto istanzia il trie dopo aver letto i dati dal file XML ogni volta che viene caricata l'estensione.Leggere il file imballato con l'estensione di Chrome nello script di contenuto

Come leggere questo file XML tramite lo script di contenuto (o la pagina di sfondo)? Devo usare localStorage?

risposta

6

Una semplice richiesta AJAX al file XML dovrebbe dare i nodi DOM XML:

function request(url) { 
    var xhr = new XMLHttpRequest(); 
    try { 
     xhr.onreadystatechange = function(){ 
      if (xhr.readyState != 4) 
       return; 

      if (xhr.responseXML) { 
       console.debug(xhr.responseXML); 
      } 
     } 

     xhr.onerror = function(error) { 
      console.debug(error); 
     } 

     xhr.open("GET", url, true); 
     xhr.send(null); 
    } catch(e) { 
     console.error(e); 
    } 
} 

function init() { 
    request("sample.xml"); 
} 

Lei avrebbe bisogno di utilizzare un parser XML js-based o scrivere il proprio. Potrebbe essere più semplice salvare i dati come oggetto JSON.

+0

Grazie Shrey! Funziona come un fascino per le pagine di sfondo ma non per gli script di contenuto (dato che vengono eseguiti nel contesto della pagina Web e finiscono per ottenere http: // qualche webpage.com /sample.xml). Risulta che ho bisogno del trie solo nella pagina di sfondo, non nello script di contenuto. Inizialmente non ero sicuro di dove avrei usato il trie, quindi lo output in XML ma JSON è una scelta migliore per js. Grazie :) – Vikesh

+0

In realtà, mi aspettavo Chrome. * Come API per accedere a file confezionati con estensioni; Sembra che non esistano. – Vikesh

+0

Sì, è leggermente contro-intuitivo. Se hai bisogno dei dati nello script di contenuto, puoi sempre passarlo dalla pagina di sfondo usando sendMessage. – Shrey

Problemi correlati