2010-06-07 8 views
5

मुझे पता है कि सुरक्षा कारणों से यह हासिल करना आसान नहीं है, हालांकि ऐसा करने का एक तरीका होगा जैसे फ़ायरबग करता है ...फ़ायरफ़ॉक्स एक्सटेंशन को कोड करने के लिए कैसे करें जो पृष्ठ के संदर्भ में जावास्क्रिप्ट कोड चलाते हैं जैसे फ़ायरबग

कृपया मदद, कुछ प्रभाव को प्राप्त करने के लिए पृष्ठ के संदर्भ में कुछ स्क्रिप्ट आह्वान करने के लिए चाहते हैं ...

असल में, मैं प्राप्त करने के लिए दो कार्यक्षमता चाहते हैं: 1. स्वचालित रूप से किसी भी वेब पेज के लिए jQuery जोड़ने अगर पहले से मौजूद नहीं । 2. जब कुछ पता खोलें, सर्वर को सूचित करने के लिए उस पृष्ठ की एक विधि को कॉल करें। (पृष्ठ की AJAX कार्यक्षमता)

मैंने शरीर पर इंजेक्ट करने की कोशिश की है, कोई किस्मत नहीं। ने विंडो ऑब्जेक्ट प्राप्त करने का प्रयास किया, हालांकि फ़ंक्शन को कॉल करने के लिए एक्सेस नहीं है।

स्थान को कुछ इस तरह बदलने की कोशिश करेगा: जावास्क्रिप्ट: अलर्ट ('टेस्ट इंजेक्ट');

कई thx।

उत्तर

2

ठीक है, कुछ आधिकारिक दस्तावेज और ग्रीसमोन्की के स्रोत को पढ़ने के बाद, मुझे निम्न विधि मिलती है जो मूल रूप से मेरे लिए काम करती है।

आशा है कि यह sb के घंटे की बचत होगी:

var appcontent = document.getElementById("appcontent"); // browser 
    if (appcontent) { 
     appcontent.addEventListener("DOMContentLoaded", function (evnt) { 
      var doc = evnt.originalTarget; 
      var win = doc.defaultView; 
      var unsafeWin = win.wrappedJSObject; 

      // vote.up is the function on the page's context 
      // which is take from this site as example 
      unsafeWin.vote.up(...); 
     }, true); 
    } 
} 
+1

बस एक नोट है कि इस तरह से unsafeWin का उपयोग अविश्वसनीय रूप से खतरनाक है। उदाहरण के लिए, var वोट = { उठने के लिए एक दुर्भावनापूर्ण पृष्ठ के लिए कानूनी है: फ़ंक्शन() { [[get-window-object]]। Components.classes ["@ mozilla.org/file/local ; 1 "]। CreateInstance (Components.interfaces.nsILocalFile); // वेब पेज के पास अब आपके स्थानीय फाइल सिस्टम तक पहुंच हो सकती है। } } यह वैश्विक कार्यक्षेत्र अलग होने के बाद से सीधे काम नहीं करेगा, लेकिन दुर्घटना से यह आसान है कि स्क्रिप्ट को खिड़की के लिए एक हैंडल प्राप्त करने की अनुमति दें (उदा। मूल्य या तर्क वस्तुएं)। –

1

Greasemonkey ऐसा करता है। यदि आप समान कार्यक्षमता के साथ अपना स्वयं का एक्सटेंशन विकसित कर रहे हैं, तो आप Components.utils.evalInSandbox का उपयोग कर सकते हैं।

+1

हाँ, धन्यवाद। मैं सोच रहा हूं कि GreaseMonkey पर निर्भर किए बिना विस्तार कैसे करें ... – ccppjava

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

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