2010-09-11 14 views
10

Dynamicznie tworzę i niszczę teksty w tym celu. Jednak kiedy utworzę textarea, a następnie jej instancję w tinymce - wtedy znowu wrócę do strony, to nie działa. Odkryłem, że rozwiązaniem jest usunięcie istniejącej instancji o tej samej nazwie, ale zastanawiałem się, czy można to zrobić po uruchomieniu.Jak usunąć wszystkie wystąpienia tinymce przy uruchomieniu?

Z góry dziękuję!

Odpowiedz

13

Musisz upewnić się, że teksty lub inne elementy, dla których tworzysz małą instancję, muszą mieć różne identyfikatory.

Aby usunąć wszystkie instancji TinyMCE można użyć (tinymce3):

 for (var i = tinymce.editors.length - 1 ; i > -1 ; i--) { 
      var ed_id = tinymce.editors[i].id; 
      tinyMCE.execCommand("mceRemoveControl", true, ed_id); 
     } 

Dla tinymce4 użytku:

 for (var i = tinymce.editors.length - 1 ; i > -1 ; i--) { 
      var ed_id = tinymce.editors[i].id; 
      tinyMCE.execCommand("mceRemoveEditor", true, ed_id); 
     } 

upewnij się, aby zamknąć przypadki właściwą drogę podczas próby ponownego zainicjowania do TinyMCE instancja. W przeciwnym razie okno edytora może pozostać białe lub nie można go w ogóle edytować.

+1

to nie będzie działać, ponieważ kolekcja tinymce.editors.length maleje w rozmiarze – P6345uk

+1

@ P6345uk: poprawna, wziąłem to pod uwagę teraz – Thariama

+0

Chłodny, który był szybki – P6345uk

0

Można użyć tych linii w onload funkcji javascript lub na oszczędność formy poprzedniej instancji

if (tinyMCE.getInstanceById(id) != null) 
{ 
    tinyMCE.execCommand('mceRemoveControl', true, id); 
} 

gdzie id jest identyfikator textarea lub wejście na której TinyMCE jest obecny

0

Jak wcześniej @ P6345uk powiedział w komentarzach, kolekcja tinymce.editors.length zmniejsza się.

Ponieważ kod z @Thariama również nie działał dla mnie, zrobiłem lil update i zrobiłem te linie. Pracował dla mnie, spróbuj też.

var length = tinymce.editors.length; 
if(length>0){ 
    for (var i=0; i<length; i++) { 
     tinyMCE.execCommand('mceRemoveControl',false, tinymce.editors[0].id); 
    }; 
} 
6

Kolega Beni odkrył inteligentne rozwiązania, aby usunąć wszystkie istniejące TinyMCEs:

if(typeof(tinyMCE) !== 'undefined') { 
    var length = tinyMCE.editors.length; 
    for (var i=length; i>0; i--) { 
    tinyMCE.editors[i-1].remove(); 
    }; 
} 
1

To właśnie używam i wydaje się działać prawidłowo:

while (tinymce.editors.length > 0) { 
    tinymce.remove(tinymce.editors[0]); 
} 
9

dla mnie prac to rozwiązanie:

tinymce.editors = []; 

S O, można wyczyścić tablicę redaktorzy pierwszy i ponownie zainicjować edytora z pliku init:

tinymce.editors = []; 
tinymce.init({ 
    selector: 'textarea.tinymce', 
    ... 
}); 
+1

rozwiązało to problem na firefox. Świetna – anhnt

+1

To powinna być zaakceptowana odpowiedź! Proste, działa również w IE (11 dla mnie). – toni07

+0

+1. Tylko to, co zadziałało dla mnie (tinymce 4.3.13, firefox 47, wiele instancji edytora w zakładkach jquery ui, gdzie użytkownik musi stale zmieniać zakładki i zmieniać zawartość edytora) – andrew

Powiązane problemy