2011-12-18 35 views
9

Tôi đang phát triển tiện ích mở rộng của Chrome cần đóng gói tệp XML (cấu trúc dữ liệu trie) và có thể đọc tệp đó từ tập lệnh nội dung. Vì vậy, tập lệnh nội dung sẽ khởi tạo trình duyệt sau khi đọc dữ liệu từ tệp XML mỗi khi tiện ích mở rộng được tải.Đọc tệp được đóng gói với tiện ích mở rộng của Chrome trong tập lệnh nội dung

Cách đọc tệp XML này thông qua tập lệnh nội dung (hoặc trang nền)? Tôi có cần sử dụng localStorage không?

Trả lời

6

Yêu cầu ajax đơn giản để các tập tin XML nên cung cấp cho bạn các nút 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"); 
} 

Bạn sẽ cần phải sử dụng một xml parser js dựa trên hoặc gửi thư riêng bạn. Nó có thể dễ dàng hơn để lưu dữ liệu của bạn như một đối tượng JSON.

+0

Cảm ơn Shrey! Điều này hoạt động như một sự quyến rũ cho các trang nền chứ không phải cho các tập lệnh nội dung (khi chúng chạy trong ngữ cảnh của trang web và kết thúc là GET http: // some webpage.com /sample.xml). Hóa ra tôi chỉ cần trie trong trang nền chứ không phải trong tập lệnh nội dung. Ban đầu tôi không chắc mình sẽ sử dụng trie ở đâu, vì vậy hãy xuất nó bằng XML nhưng JSON là một lựa chọn tốt hơn cho js. Cảm ơn :) – Vikesh

+0

Thực ra, tôi đã mong đợi chrome. * Như API để truy cập các tệp được đóng gói với các tiện ích mở rộng; Có vẻ như họ không tồn tại. – Vikesh

+0

Vâng, nó hơi phản trực giác. Nếu bạn cần dữ liệu trong tập lệnh nội dung, bạn luôn có thể truyền dữ liệu từ trang nền bằng cách sử dụng sendMessage. – Shrey

Các vấn đề liên quan