2012-04-10 12 views
7

मैं एक js अनुप्रयोग है कि पृष्ठ को पुनः लोड कभी नहीं है, इसलिए जब मैं TinyMCE पूरी तरह से नियंत्रित करता है हटाने की जरूरत नेविगेट, और फिर मैं फिर से प्रारंभ करने में जब एक क्षेत्र यह जरूरत है कि करने के लिए नेविगेट करने चाहते हैं। मैंने इस प्रश्न के स्वीकृत उत्तर की कोशिश की, लेकिन ऐसा कुछ नहीं लगता है।निकालें TinyMCE नियंत्रण और फिर से जोड़ना

How do i remove tinyMCE and then re-add it?

tinymce.EditorManager.execCommand('mceRemoveControl',true, editor_id); 

और मेरे विशिष्ट implimentation:

//if I throw an alert here, it does get called, so I know it's not null 
    if (tinyMCE.getInstanceById("main-text")) 
      tinyMCE.EditorManager.execCommand('mceRemoveControl', true, "main-text"); 

मैं भी

tinyMCE.remove(tinyMCE.getInstanceById("main-text")); 
    // AND 
    tinyMCE.remove("main-text"); 

मुझे पता है कि कि बयान निष्पादित हो जाता है जब मैं सशर्त में एक सूचना की कोशिश की। .. मुझे पता है कि यह सही आईडी है - क्या एपीआई था में कुछ और दफनाया गया है मैं याद नहीं कर रहा हूँ? यह jQuery संस्करण नहीं है। संपादक हटाने के प्रयास के बाद भी जारी रहता है, और मुझे उसी आईडी के साथ एक नया भी मिलता है यदि मैं फॉर्म के साथ राज्य में वापस जाकर इसे फिर से जोड़ता हूं।

संपादित करें: समाधान नीचे केवल 3.4.9 में वर्तमान बिल्ड 3.5b3 में काम नहीं करता,। एक बग है जहां 'टी अपरिभाषित नहीं है'

बस मामले में, यह init के बाद डोम का प्रासंगिक हिस्सा है।

<textarea id="main-text" style="display: none;" aria-hidden="true"></textarea> 
<span id="main-text_parent" class="mceEditor defaultSkin" role="application" aria-labelledby="main-text_voice" style="display: inherit;"> 
<span id="main-text_voice" class="mceVoiceLabel" style="display:none;">Rich Text Area</span> 
<table id="main-text_tbl" class="mceLayout" cellspacing="0" cellpadding="0" role="presentation" style="width: 100%; height: 400px;"> 
<tbody> 
<tr class="mceFirst" role="presentation"> 
<td class="mceToolbar mceLeft mceFirst mceLast" role="presentation"> 
<div id="main-text_toolbargroup" aria-labelledby="main-text_toolbargroup_voice" role="group" tabindex="-1"> 
<span role="application"> 
</div> 
<a onfocus="tinyMCE.getInstanceById('main-text').focus();" title="Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X" accesskey="z" href="#"></a> 
</td> 
</tr> 
<tr> 
<tr class="mceLast"> 
</tbody> 
</table> 
</span> 

उत्तर

5

मैंने इसे कुछ बार चलाया है। इसे हल करने के लिए मैं सुनिश्चित करता हूं कि tinyMCe नियंत्रण में फोकस नहीं है (कुछ ब्राउज़रों में कुछ बग का कारण बनता है), tinyMCE नियंत्रण को हटा दें, और उस पाठ क्षेत्र को हटा दें जिसमें नियंत्रण संबद्ध था।

if (typeof tinyMCE != 'undefined') { 
    tinyMCE.execCommand('mceFocus', false, 'main-text'); 
    tinyMCE.execCommand('mceRemoveControl', false, 'main-text'); 
    var container = document.getElementById('main-text-parent'); 
    container.removeChild(document.getElementById('main-text')); 
    //i normally just do $("#main-text").remove(); but you specified not using jquery, so this should, in theory, remove it, if main-text-parent is replaced with the parent container of your main-text. 
} 
+1

जहां क्या आज्ञा execCommand समारोह ले जाएगा के लिए दस्तावेज़ है? मैनुअल बस का कहना है पहले पैरामीटर है "कमांड प्रदर्शन करने के लिए" और वहाँ के मैनुअल के लिए "mceRemoveControl" – Andy

+0

http://www.tinymce.com/wiki.php/API3:method.tinymce.execCommand और इस वार्ता में कोई संदर्भ है mceRemoveControl के बारे में थोड़ा सा: http://www.tinymce.com/wiki.php/TinyMCE3x:Command_identifiers – Patricia

21

किसी भी एक है जो इस पोस्ट के पार चलो:

यहाँ प्रासंगिक कोड है। अब tinymce 4.X को निकालने के फ़ंक्शन को कॉल करके केवल एक संपादक या संपादक फॉर्म पेज को हटाने के लिए समर्थन है।

http://www.tinymce.com/wiki.php/api4:method.tinymce.remove

// Remove all editors bound to divs 
tinymce.remove('div'); 

// Remove all editors bound to textareas 
tinymce.remove('textarea'); 

// Remove all editors 
tinymce.remove(); 

// Remove specific instance by id 
tinymce.remove('#id'); 
+1

आपको बहुत बहुत धन्यवाद! – Vitaly

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