2012-11-18 11 views
7

मैं वर्तमान में एड-ऑन एसडीके का उपयोग करके फ़ायरफ़ॉक्स एक्सटेंशन विकसित कर रहा हूं और वास्तविक समस्या में फंस गया हूं।फ़ायरफ़ॉक्स में सामग्री स्क्रिप्ट में सापेक्ष छवि यूआरएल एसडीके

main.js

var pageMod = require("page-mod"); 
var self = require("self"); 

pageMod.PageMod({ 
    include: "http://mail.google.com/mail/*", 
    contentScriptFile: [self.data.url("jquery.js"), 
         self.data.url("start.js")], 
    attachTo : ["top"] 
}); 

start.js

$('body').append('<div>1</div><img src="insertnote.png" /><div>2</div>'); 

दोनों start.js और insertnote.png में स्थित हैं: मूल रूप से अपने एक्सटेंशन सिर्फ इस तरह एक वेबपृष्ठ में एक सामग्री स्क्रिप्ट injects डेटा फ़ोल्डर छवि के अलावा सबकुछ काम करता है। मैं बस छवि टैग के लिए असली यूआरएल प्राप्त करने के लिए नहीं मिल सका। सापेक्ष यूआरएल काम नहीं कर रहा प्रतीत होता है। :(

, कि यहां तक ​​कि संभव सामग्री स्क्रिप्ट के अंदर ऐड-ऑन के भीतर चित्रों को शामिल करने या मैं बस अपना वेब सर्वर पर पूर्ण यूआरएल का उपयोग करना चाहिए है?

+0

संभव डुप्लिकेट [एक Firefox विस्तार के डेटा निर्देशिका में एक फ़ाइल को संदर्भित करने के लिए कैसे?] (Http://stackoverflow.com/प्रश्न/11551467/कैसे-से-संदर्भ-ए-फाइल-इन-द-डेटा-निर्देशिका-ऑफ-द-फ़ायरफ़ॉक्स-एक्सटेंशन) –

उत्तर

2

निम्नलिखित सी स्तोत्र सिर्फ एक हर संपत्ति के यूआरएल युक्त वस्तु पारित करने के लिए

main.js

var pngurl = self.data.url("insertnote.png"); 

//inside PageMod constructor 
onAttach: function(worker) { 
    worker.port.emit("imageurl",pngurl); 
} 

start.js

self.port.on("imageurl", function(imgurl){ 
    var img = document.createElement("img"); 
    img.src = imgurl; 
    document.body.appendChild(img); 
}); 

स्वाभाविक रूप से यह और अधिक कुशल हो जाएगा काम करना चाहिए।

+1

यह काफी दर्दनाक हालांकि एक विकल्प की तरह लगता है। लेकिन वैसे भी धन्यवाद, मैं इस उत्तर को स्वीकार करता हूं –

+1

contentScriptOptions यह मान भी प्राप्त कर सकता है कि आपको इसकी आवश्यकता है। नीचे जवाब देखें। –

0

समस्या यह है कि सापेक्ष URL दस्तावेज़ के सापेक्ष व्याख्या कर रहे हैं जो इस में केस पृष्ठ है, क्योंकि आप स्ट्रिंग के रूप में सीधे पृष्ठ में डाल रहे हैं।

सामान्य रूप से, ऐड-ऑन में छवियों से लिंक कर सकते हैं यदि एड-ऑन स्पष्ट रूप से ऐसा कहता है; उनके पास है उपयुक्त क्रोम का उपयोग करने के लिए: // यूआरआई ऐसा करने के लिए।

+0

क्या आप उदाहरण दे सकते हैं कि क्रोम: // यूआरआई का उपयोग कैसे करें? –

+0

हां, कृपया एक उदाहरण दें। मैंने पथ में 'contentaccessible = yes' जोड़ने की कोशिश की लेकिन यह काम नहीं कर रहा है: [मैं एक छवि को कैसे सुलभ कर सकता हूं जो फ़ायरफ़ॉक्स एसडीके एडन के अंदर रहता है?] (Http://stackoverflow.com/q/23804391) – rubo77

+0

@ बोरीज़ ज़र्स्की: हाँ, कृपया एक उदाहरण दें। मैंने पथ में 'contentaccessible = yes' जोड़ने की कोशिश की लेकिन यह काम नहीं कर रहा है: [मैं एक छवि को कैसे सुलभ कर सकता हूं जो फ़ायरफ़ॉक्स एसडीके एडन के अंदर रहता है?] (Http://stackoverflow.com/q/23804391) – rubo77

14

आप सामग्री स्क्रिप्ट में मानों को पारित करने के लिए "contentScriptOptions" का उपयोग कर सकते हैं।

main.js

var pageMod = require("sdk/page-mod"); 
var self = require("sdk/self"); 
pageMod.PageMod({ 
    include: "http://mail.google.com/mail/*", 
    contentScriptFile: [self.data.url("jquery.js"), 
         self.data.url("start.js")], 
    attachTo : ["top"], 
    contentScriptOptions: { 
    pngUrl: self.data.url("insertnote.png") 
    } 
}); 

start.js

$('body').append('<div>1</div><img src="' + self.options.pngUrl + '" /><div>2</div>'); 
की
संबंधित मुद्दे