2012-07-18 31 views
7

मैं फ़ायरफ़ॉक्स एक्सटेंशन पर काम कर रहा हूं और मुझे एक सामग्री स्क्रिप्ट से किसी पृष्ठ में एक जावास्क्रिप्ट इंजेक्ट करने की आवश्यकता है। मेरे क्रोम एक्सटेंशन में मैंने निम्नलिखित किया है:फ़ायरफ़ॉक्स एक्सटेंशन की डेटा निर्देशिका में किसी फ़ाइल का संदर्भ कैसे लें?

this.initializeJplayerSupport = function() { 
    var script = document.createElement('script'); 
    script.setAttribute('type', 'application/javascript'); 
    script.setAttribute('src', chrome.extension.getURL('js/custom-jplayer.js')); 
    document.head.appendChild(script); 
} 

फ़ाइल मेरी डेटा निर्देशिका में है। मैं फ़ायरफ़ॉक्स एक्सटेंशन सामग्री स्क्रिप्ट में किसी जेएस फ़ाइल का संदर्भ कैसे दे सकता हूं (जहां मैंने क्रोम के लिए chrome.extension.getURL() का उपयोग किया है)?

उत्तर

10

क्या आपने अपना SDK आधारित ऐड-ऑन, आप की आवश्यकता है और 'स्वयं' वस्तु से 'डेटा' सहायक का उपयोग में main.js में रहते हैं:

var data = require('self').data; 

console.log(data.url('somefile.js')); // prints the resource uri to the file. 

अधिक जानकारी के लिए:

https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/self#data

एक बार जब आप इस संसाधन uri मिलता है, आप तो यह एक सामग्री स्क्रिप्ट के लिए self.postMessage या self.port.emit का उपयोग कर आपूर्ति कर सकते हैं:

https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts

+0

कि मुख्य स्क्रिप्ट सही में है और एक सामग्री में नहीं? या मैं गलत हूँ? – PeeHaa

+0

यह मुख्य लिपि में है, 'main.js', हाँ। – canuckistani

+0

"मैं फ़ायरफ़ॉक्स प्लगइन ** सामग्रीस्क्रिप्ट ** में एक जेएस फ़ाइल का संदर्भ कैसे दे सकता हूं"। क्या यह संभव है या क्या मैं इसे गलत तरीके से देख रहा हूं? – PeeHaa

2

ऐसा लगता है कि फ़ायरफ़ॉक्स 38, cfx में शुरू होने से jpm के साथ बदल दिया गया है।

कौन सा हो क्यों इस लाइन मेरे लिए काम नहीं कर रहा था हो सकता है:

var data = require('self').data; 

मैं बस किया था यह थोड़ा के पुनर्लेखन के लिए:

var data = require('sdk/self').data;