2012-01-20 15 views
5

मैं अपने आवेदन के उपयोगकर्ताओं के एक प्लगइन एपीआई वस्तु मैं प्रदान के अलावा और कुछ के लिए उपयोग की अनुमति के बिना जावास्क्रिप्ट कि अपनी कार्यक्षमता का विस्तार, में प्लग इन लिखने के लिए अनुमति देने के लिए करना चाहते हैं। उदाहरण के लिए, एक प्लगइन निम्नलिखित प्रकार दिखाई देंगे:जावास्क्रिप्ट को स्वच्छ करने के लिए काजा का उपयोग करना?

plugin.hookSomeUserAction(function() { 
    plugin.doSomethingWickedAwesome(); 
    document.title = 'hacked!'; //shouldn't work 
}); 

काजा जैसे कि यह काम कर पाने में सक्षम होना चाहिए है, लेकिन प्रलेखन शायद किसी भी ओपन-सोर्स प्रोजेक्ट मैंने देखा है की सबसे खराब है (काफी एक उपलब्धि!)। मुझे सिस्टम स्थापित करने में कुछ मदद की ज़रूरत है।

मैं cajoler कमांड लाइन पर काम कर मिल गया है, और मैं उम्मीद है कि स्वच्छ जावास्क्रिप्ट किसी तरह का में ऐसे ही एक प्लगइन cajoled गए हैं। Cajoled जावास्क्रिप्ट ऐसा लगता है कि यह एक "IMPORTS___" ऑब्जेक्ट प्रदान करने की अपेक्षा कर रहा है, जिसमें प्लगइन की सभी सामग्री शामिल होनी चाहिए। अब तक बहुत आशाजनक!

दुर्भाग्य से, कि हो रही है वास्तव में लोड करने के लिए जावास्क्रिप्ट फ़ाइल cajoled और रन एक असली गड़बड़ में बदल गया है। स्रोत स्निपेट in the docs दुर्भाग्यवश पूरी तरह से गलत है, क्योंकि फ़ंक्शन लोडकाजा वास्तव में Google-caja के वर्तमान ट्रंक में कहीं भी दिखाई नहीं देता है।

<div id="plugin"></div> 
<script> 
    caja.configure({ 
     cajaServer: "/js/caja" 
    }, function(frameGroup) { 
     frameGroup.makeES5Frame(document.getElementById('plugin'), 
      { /* No network access */ }, 
      function(frame) { 
       frame.url('/js/plugins/test.js') 
        .run({}); 
      } 
     ); 
    }); 
</script> 

दुर्भाग्य से, क्या करता है जावास्क्रिप्ट कि मैं पहले से ही cajoled गया है फिर से झूठ बोलना cajoler प्राप्त करने के लिए प्रयास है: मैं कुछ कोड है कि कम से कम कुछ करता है नीचे ट्रैक किए गए। मैं निश्चित रूप से सर्वर को हर अनुरोध पर प्रत्येक प्लगइन को फिर से चलाने में दिलचस्पी रखने में दिलचस्पी रखता हूं; मैं बस इसे अपलोड करने के लिए इसे तैयार कर दूंगा और इसे उपयोग करने के लिए तैयार कर दूंगा।

मुझे IMPORTS___ में क्या निर्दिष्ट किया गया है या कहां निर्दिष्ट करना है, इस पर कोई दस्तावेज नहीं मिल रहा है (यह देखते हुए कि यह संपूर्ण सुरक्षा मॉडल है, यह दस्तावेज़ीकरण में एक अजीब निरीक्षण की तरह लगता है)। क्या यह वस्तु .run() में गुजर रही है?

उत्तर

0

खुशी से पर्याप्त काजा का मेरा एकमात्र ज्ञान केवल एसईएस के स्रोत कोड को पढ़ने के कोण से आता है और इसके उपयोग के संदर्भ के बारे में जानकारी नहीं है। मुझे स्रोत कोड को अविश्वसनीय रूप से अच्छी तरह से प्रलेखित किया गया है क्योंकि जो कुछ भी दस्तावेज करता है या बाहरी रूप से अस्तित्व में नहीं है।

http://code.google.com/p/es-lab/source/browse/trunk/src/ses/initSES.js

+1

क्या मैं पूछ सकता हूं, एसईएस क्या है? – Coffee

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