2012-11-11 11 views
5

मैं TinyMCE के लिए एक प्लगइन लिख रहा हूं और मैं संपादित किए जा रहे दस्तावेज़ पर कुछ हेरफेर करने के लिए jQuery का उपयोग करना चाहता हूं।एक TinyMCE प्लगइन में jQuery का उपयोग करें

मैं एक तरह से jQuery (जैसे एक .tinymce() एक चयनकर्ता पर विधि) के साथ TinyMCE का उपयोग करने के लिए नहीं देख रहा हूँ, मुझे पता है कि के लिए समाधान कर रहे हैं।

असल में मुझे TinyMCE द्वारा उत्पन्न आईफ्रेम में jQuery शामिल करने की आवश्यकता है।

tinymce.dom.ScriptLoader मूल विंडो में लोड होने लगता है, आईफ्रेम में नहीं, इसलिए यह कोई विकल्प नहीं है।

क्या मैं अब तक की कोशिश की है: ScriptLoader के माध्यम से माता पिता और प्लगइन संदर्भ में

  • लोड jQuery (उत्तरार्द्ध बिल्कुल कोई प्रभाव नहीं है, गलत संदर्भ में पूर्व लोड यह)
  • विंडो.parent। $, जो अपरिभाषित है (भले ही यह पैरेंट विंडो में लोड हो)
  • RTFM'ing और googling लेकिन कोई प्रासंगिक हिट नहीं है। यदि प्लगइन एक संवाद खोलता है तो अतिरिक्त जावास्क्रिप्ट लोड करने का एक विकल्प होता है, लेकिन यह भी मुझे नहीं चाहिए।

कोई भी TinyMCE प्लगइन में jQuery का उपयोग कर रहा है? कैसे?

अपडेट/solutution

Thariama के सुझाव के लिए धन्यवाद मैं इस काम करने के लिए प्राप्त करने में सक्षम था। आप या तो संपादक को प्राप्त करने के लिए एक स्पष्ट tinymce.get() का उपयोग कर सकते हैं, या 'एड' इंस्टेंस जो आपके प्लगइन की init() विधि में पास हो गया है। यह पता चला है कि इनिट चरण में ही आप माता-पिता को इस तरह से एक्सेस नहीं कर सकते हैं। आप इसे एक विशिष्ट हैंडलर में कर सकते हैं।

उदा।

(function($) { 
    tinymce.create('tinymce.plugins.SOSamplePlugin', { 
    init: function(ed, url) { 
     $ = ed.getWin().parent.jQuery; // <- WON'T WORK! 

     ed.addCommand('soCmd', function(ui, v) { 
      if(e = ed.selection.getNode()) { 
       $ = ed.getWin().parent.jQuery; // <- WORKS! 
       $(e).wrap('<div class="sample" />'); 
       ed.execCommand("mceRepaint"); 
      } 
     }); 
     ed.addButton('SO', { 
      title: 'Title', 
      cmd: 'soCmd', 
      image: 'somebutton.png' 
     }); 
    }, 
    getInfo: function() { 
     return { 
      longname: 'Example Plugin', 
      author: 'Ivo', 
      authorurl: 'http://vanderwijk.info/', 
      infourl: 'http://vanderwijk.info', 
      version: '1.0' 
     }; 
    } 
    }); 
    tinymce.PluginManager.add('so', tinymce.plugins.SOSamplePlugin); 
})($); 

उत्तर

4

यह आपको एक TinyMCE प्लगइन में बुनियादी डोम manupulation कर सकते हैं आसान

var editor = tinymce.get('your_editor_id'); 

jQuery पहुंच योग्य

editor.getWin().parent.jQuery 
+0

धन्यवाद काम करता है! यह getWin() और/या इसे कॉल करने के लिए उचित चरण का संयोजन है - पोस्ट में अपडेट देखें। –

-3

ठीक है मेरे अनुभव के मुताबिक आप किसी भी जेएस या jquery को IFrame में नहीं बदल सकते हैं, इसलिए यह बात संभव नहीं है।

+0

उपयोग कर रहा है, मैं नहीं दिख रहा है तुम क्यों नहीं कर सकते कि jQuery –

+0

साथ मुझे अब कोई जानकारी नहीं है। लेकिन ऐसा लगता है कि jQuery सिर्फ एक बार अपने पेड़ का निर्माण करता है, और आईफ्रेम कोड शामिल नहीं है। वास्तव में iframe की शुरुआत में jQuery सहित आंतरिक डोम (iframe का डोम) पार्स करेगा, और यह –

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