2011-12-18 25 views
9

Opracowuję rozszerzenie przeglądarki Chrome, które musi spakować plik XML (strukturę danych Trie) i móc odczytać ten plik ze skryptu treści. Tak więc skrypt zawartości tworzy instancję po przeczytaniu danych z pliku XML za każdym razem, gdy ładowane jest rozszerzenie.Przeczytaj plik spakowany z rozszerzeniem do Chrome w skrypcie treści

Jak odczytać ten plik XML za pomocą skryptu treści (lub strony tła)? Czy muszę używać localStorage?

Odpowiedz

6

Prosty ajax żądanie do pliku XML powinno dać węzłów XML DOM:

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"); 
} 

Trzeba by użyć js oparte parsera XML lub napisać własne. Może być łatwiej zapisać dane jako obiekt JSON.

+0

Dzięki Shrey! To działa jak czar na stronach tle, ale nie na skryptach treści (jak one działają w kontekście strony i kończy się czuło http: // niektóre webpage.com /sample.xml). Okazuje się, że potrzebuję trie tylko na stronie w tle, a nie w skrypcie treści. Początkowo nie byłem pewien, gdzie będę używał trie, więc wypisz go w XML, ale JSON jest lepszym wyborem dla js. Dzięki :) – Vikesh

+0

Właściwie spodziewałem chrom * jak API dla dostępu do plików w pakiecie wraz z rozszerzeniami.; Wygląda na to, że nie istnieją. – Vikesh

+0

Tak, jest lekko sprzeczny z intuicją. Jeśli potrzebujesz danych w skrypcie treści, możesz zawsze przekazać go ze strony w tle za pomocą sendMessage. – Shrey

Powiązane problemy