2012-04-10 20 views
7

Ben bu yüzden TinyMCE tamamen kontrol kaldırmak gerekir gezinirken, asla sayfayı yeniden bir js uygulaması var, sonra ben gereksinim duyan bir alana gezinirken yeniden başlatmak istiyor. Bu soruya verilen cevabı denedim, ama hiçbir şey yapmıyor gibi görünüyor.Kaldır TinyMCE kontrolü ve yeniden ekleyin

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

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

ve benim spesifik 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"); 

Ben de

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

Ben koşullu bir uyarı koyduğunuzda o cümle çalışır biliyor çalıştı. .. Bunun doğru kimlik olduğunu biliyorum - API tha gömülü başka bir şey var mı Ben kayıp mıyım? Bu jQuery sürümü değil. Editör, kaldırma denemesinden sonra da devam ediyor ve eğer formla birlikte geri gidip yeniden başlatarak aynı kimliğe sahip yeni bir tane bile alıyorum.

DÜZENLEME: Çözüm aşağıda sadece 3.4.9 yılında, geçerli yapı 3.5b3 çalışmaz.

Ne olur ne olmaz, bu init sonra DOM ilgili bölümü olan 't tanımlanmamış' bir hata var.

<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> 

cevap

5

Bunu birkaç kez deniyorum. Bunu çözmek için, tinyMCe kontrolünün odaklanmadığından emin olun (bazı tarayıcılarda bazı hatalara neden olur), tinyMCE denetimini kaldırın ve denetimin ilişkilendirildiği metin alanını kaldırın. Bu yayına rastlamak

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

nerede execCommand fonksiyonu alacak komutları ne için dokümantasyon nedir? Manuel İlk parametre "komutu gerçekleştirmek için" ve kılavuzuna "mceRemoveControl" – Andy

+0

http://www.tinymce.com/wiki.php/API3:method.tinymce.execCommand ve bu görüşmelerin hiçbir gönderme var olduğunu söylüyor mceRemoveControl hakkında biraz: http://www.tinymce.com/wiki.php/TinyMCE3x:Command_identifiers – Patricia

21

herhangi biri:

İlgili kod İşte. Şimdi tinymce 4.X sadece işlevini kaldırmak çağırarak bir editör veya editörler form sayfasını çıkarma için destek var.

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

çok teşekkür ederim! – Vitaly