2011-12-29 12 views
6

में टेक्स्टरेरा की शुरुआत में पाठ को सम्मिलित करता है मैंने मैथजेक्स का उपयोग करके संपादक गणितीय सूत्रों में डालने के लिए tinyMCE के लिए एक प्लगइन बनाया है। यह प्लगइन एक आईफ्रेम (jQuery का उपयोग करके) में एक पॉपअप खोलता है और फिर tinyMCE सक्रिय संपादक में दर्ज सूत्र को सम्मिलित करने के लिए ईवेंट पर ट्रिगर लॉन्च करता है।tinymce.selection.set सामग्री आईई

मेरे कोड क्रोम & में ठीक से काम कर रहा है फ़ायरफ़ॉक्स (एक pre कि पाठ क्षेत्र के कैरट की स्थिति में डाला जाता है बनाता है) लेकिन IE में पाठ पाठ क्षेत्र की शुरुआत में डाला जाता है।

मैं इस तरह setContent विधि का उपयोग कर रहा हूँ:

tinyMCE.activeEditor.selection.setContent(text to insert, {format: 'bbcode'}); 

मैं डालने और अन्य सिफारिशों StackOverflow में पाया लेकिन कुछ भी मेरे लिए काम किया पहले ed.focus() का उपयोग करने की कोशिश की।

इसके अलावा, मैंने पॉपअप खोलने से पहले कैरेट की स्थिति को सहेजने की कोशिश की और डालने के दौरान इसे बहाल करने की कोशिश की लेकिन वैसे भी काम नहीं किया।

कोई विचार?

अग्रिम धन्यवाद। इस तरह

उत्तर

6

हल लिंक में दिए गए उदाहरण पर एक नज़र डालें।

पॉपअप खोलने से पहले मैं के साथ एक "काल" और विशिष्ट आईडी इस तरह सम्मिलित करें:

var sel = tinyMCE.activeEditor.selection; 
sel.setContent('<span id="_math_marker">&nbsp;</span>'); 

तब, जब पॉपअप बंद करता है और पाठ संपादक के लिए वापस भेज दिया जाता है, मैं के साथ अवधि के लिए देखो मार्कर तो मैं उसका चयन करें और setContent फोन:

var ed = tinyMCE.activeEditor; 
var marker = ed.dom.get('_math_marker'); 
ed.selection.select(marker, false); 
ed.selection.setContent("TEXT TO INSERT"); 

यह सभी ब्राउज़रों के लिए काम करता है! अगर संपादक में बकवास छोड़ने से बचने के लिए कुछ भी डाले बिना पॉपअप बंद हो जाता है तो अवधि को हटाना याद रखें।

:-)

0

कोशिश कुछ:

 

var myField = tinyMCE.get("SMSBody"); 

    //IE support 
    if (document.selection) { 

     myField.focus(); 
     sel = document.selection.createRange(); 
     sel.text = fieldName; 
    } 
else if (document.getSelection) { 

     tinyMCE.activeEditor.selection.setContent(fieldName); 
     myField.focus(); 
    } 
 

आशा है कि यह आप के लिए काम करता है।

+0

काम नहीं करता है :(अब मैं पॉपअप खोलने से पहले स्थिति को सहेजने की कोशिश कर रहा हूं। मैं जितनी जल्दी हो सके अपडेट करूँगा। धन्यवाद :) – vfportero

0

हाय मैंने इस तरह की स्थिति के लिए जेसीएआर नामक jQuery प्लगइन में से एक का उपयोग किया। आमतौर पर आमतौर पर उपयोग किए जाने वाले ब्राउज़रों में से अधिकांश में काम करता है (आईई 7,8,9 संगतता मोड के साथ भी)।

मुझे पता है कि यह सबसे खूबसूरत समाधान नहीं है लेकिन मेरे लिए काम करता है:

नीचे

jCaret

धन्यवाद

+0

मैं आपकी सलाह पर विचार करूंगा। धन्यवाद! – vfportero

1

बस हटाएं।चयन हिस्सा है, तो आपके कोड

tinyMCE.activeEditor.setContent(text to insert, {format: 'bbcode'});

1

की तरह दिखना चाहिए IE8 में में नहीं कर सकते सक्रिय संपादक) मिलता है, इसलिए ध्यान देने की जरूरत है, तो

tinyMCE.activeEditor.focus का उपयोग करें (;

उम्मीद है कि यह आपके लिए काम करता है।