2011-12-18 2 views
9

Я разрабатываю расширение Chrome, которое должно упаковать XML-файл (структуру данных trie) и иметь возможность читать этот файл из сценария содержимого. Таким образом, скрипт содержимого будет создавать экземпляр trie после чтения данных из XML-файла каждый раз, когда загружается расширение.Прочитать файл, упакованный с расширением Chrome в сценарии содержимого

Как прочитать этот XML-файл через сценарий содержимого (или справочную страницу)? Нужно ли использовать localStorage?

ответ

6

простой запрос на Ajax в файл XML должен дать вам 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"); 
} 

Вам нужно будет использовать JS на основе XML Parser или написать свой собственный. Может быть проще сохранить ваши данные как объект JSON.

+0

Спасибо Shrey! Это работает как очарование для фоновых страниц, но не для сценариев контента (поскольку они запускаются в контексте веб-страницы и заканчиваются GETing http: // some webpage.com /sample.xml). Оказывается, мне нужна тэри только на фоновой странице, а не в скрипте содержимого. Первоначально я не был уверен, где я буду использовать trie, поэтому выведите его в XML, но JSON - лучший выбор для js. Спасибо :) – Vikesh

+0

На самом деле, я ожидал хром. * Как API для доступа к файлам, упакованным с расширениями; Похоже, их не существует. – Vikesh

+0

Да, это немного противоречит интуиции. Если вам нужны данные в сценарии содержимого, вы всегда можете передать его с фоновой страницы с помощью sendMessage. – Shrey

Смежные вопросы