2011-12-18 11 views
9

Estoy desarrollando una extensión de Chrome que necesita empaquetar un archivo XML (una estructura de datos trie) y poder leer ese archivo del script de contenido. De modo que el script de contenido instanciará el trie después de leer los datos del archivo XML cada vez que se cargue la extensión.Lea el archivo empaquetado con la extensión de Chrome en el script de contenido

¿Cómo leer este archivo XML mediante script de contenido (o página de fondo)? ¿Debo usar localStorage?

Respuesta

6

Una petición ajax simple al archivo XML que deben dar los nodos 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"); 
} 

Usted tendría que utilizar un analizador XML basados ​​en JS o escribir el suyo propio. Puede ser más fácil guardar sus datos como un objeto JSON.

+0

Gracias Shrey! Esto funciona como un encanto para las páginas de fondo pero no para las secuencias de comandos de contenido (ya que se ejecutan en el contexto de la página web y terminan GETing http: // alguna página web.com /sample.xml). Resulta que necesito el trie solo en la página de fondo, no en el script de contenido. Inicialmente no estaba seguro de dónde usaría el trie, así que déjelo en XML, pero JSON es una mejor opción para js. Gracias :) – Vikesh

+0

En realidad, esperaba Chrome. * Como API para acceder a archivos empaquetados con extensiones; Parece que no existen. – Vikesh

+0

Sí, es un poco contrario a la intuición. Si necesita los datos en el script de contenido, siempre puede pasarlo desde la página de fondo usando sendMessage. – Shrey

Cuestiones relacionadas