2011-12-18 2 views
9

XML 파일 (trie 데이터 구조)을 패키징하고 콘텐츠 스크립트에서 해당 파일을 읽을 수 있어야하는 Chrome 확장 프로그램을 개발 중입니다. 따라서 콘텐츠 스크립트는 확장 기능이로드 될 때마다 XML 파일에서 데이터를 읽은 후 트리를 인스턴스화합니다.콘텐츠 스크립트에서 Chrome 확장 프로그램으로 패키지 된 파일 읽기

콘텐츠 스크립트 (또는 배경 페이지)를 통해이 XML 파일을 읽는 방법은 무엇입니까? localStorage를 사용해야합니까?

답변

6

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 파서를 사용하거나 직접 작성해야합니다. 데이터를 JSON 객체로 저장하는 것이 더 쉬울 수도 있습니다.

+0

감사합니다. Shrey! 이것은 배경 페이지에 대한 매력처럼 작동하지만 (웹 페이지의 컨텍스트에서 실행되고 http : // some webpage.com /sample.xml로 끝나는) 컨텐츠 스크립트에는 적합하지 않습니다. 콘텐츠 스크립트가 아닌 배경 페이지에서만 trie가 필요하다는 것을 알았습니다. 처음에는 trie를 어디에서 사용할 것인지 잘 모르겠으므로 XML로 출력했지만 JSON은 js에 더 좋은 선택입니다. 고마워요 :) – Vikesh

+0

사실, 확장 기능이 포함 된 파일에 액세스하기위한 크롬 같은 API를 기대하고있었습니다. 그들은 존재하지 않는 것 같습니다. – Vikesh

+0

예, 약간 직관적입니다. 콘텐츠 스크립트에서 데이터가 필요한 경우 sendMessage를 사용하여 언제든지 배경 페이지에서 데이터를 전달할 수 있습니다. – Shrey

관련 문제