2011-12-18 10 views
9

मैं एक क्रोम एक्सटेंशन विकसित कर रहा हूं जिसे एक XML फ़ाइल (एक त्रि डेटा संरचना) पैकेज करने की आवश्यकता है और सामग्री स्क्रिप्ट से उस फ़ाइल को पढ़ने में सक्षम हो। इसलिए सामग्री स्क्रिप्ट प्रत्येक बार एक्सटेंशन लोड होने पर XML फ़ाइल से डेटा पढ़ने के बाद trie को तुरंत चालू कर देगा।सामग्री स्क्रिप्ट में क्रोम एक्सटेंशन के साथ पैक की गई फ़ाइल पढ़ें

सामग्री स्क्रिप्ट (या पृष्ठभूमि पृष्ठ) के माध्यम से इस XML फ़ाइल को कैसे पढ़ा जाए? क्या मुझे स्थानीय स्टोरेज का उपयोग करने की ज़रूरत है?

उत्तर

6

एक्सएमएल फ़ाइल के लिए एक साधारण ajax अनुरोध आप 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"); 
} 

आप एक js आधारित XML पार्सर का उपयोग करें या अपने खुद के बारे में की आवश्यकता होगी। JSON ऑब्जेक्ट के रूप में अपना डेटा सहेजना आसान हो सकता है।

+0

धन्यवाद श्रेय! यह पृष्ठभूमि पृष्ठों के लिए एक आकर्षण की तरह काम करता है लेकिन सामग्री स्क्रिप्ट के लिए नहीं (जैसे वे वेबपृष्ठ के संदर्भ में चलते हैं और http: // कुछ webpage.com /sample.xml प्राप्त करते हैं)। यह पता चला है कि मुझे केवल सामग्री पृष्ठ में ट्राई की आवश्यकता है, न कि सामग्री स्क्रिप्ट में। प्रारंभ में मुझे यकीन नहीं था कि मैं trie का उपयोग कहां करूंगा, इसलिए इसे एक्सएमएल में आउटपुट करें लेकिन JSON जेएस के लिए बेहतर विकल्प है। धन्यवाद :) – Vikesh

+0

वास्तव में, मैं क्रोम की उम्मीद कर रहा था। * एपीआई की तरह एक्सटेंशन के साथ पैक की गई फ़ाइलों तक पहुंचने के लिए; ऐसा लगता है कि वे मौजूद नहीं हैं। – Vikesh

+0

हाँ, यह थोड़ा सा अंतर्ज्ञानी है। यदि आपको सामग्री स्क्रिप्ट में डेटा की आवश्यकता है, तो आप sendMessage का उपयोग करके इसे पृष्ठभूमि पृष्ठ से हमेशा पास कर सकते हैं। – Shrey

संबंधित मुद्दे