2015-11-12 10 views
9

Dostałem o wiele więcej w międzyczasie. Jest jednak problem, który wciąż mam.TinyMCE znika po ponownym inicjalizacji w załadowanym AJAX DIV

Sytuacja jest tak:

Mam div z wielu pola tekstowe, które są ładowane z wywołania JQuery AJAX.

Wstępna inicjalizacja działa świetnie stosując następujący kod:

function InitializeTinyMCE() { 

/// This can also be positioned outside a function in the document ready section 
$.get("[@appbase]sereneadmin/pages/?SetAjaxCall=editor&page=[@editparam]", function (EditorHTML) { 
    $("#SerenePageEditors").html(EditorHTML).find('.EditorField').tinymce({ 
     script_url: '[@appbase]script/tinymce/js/tinymce/tinymce.jquery.min.js', 
     plugins: [ 
      "advlist autolink lists link image charmap print preview hr anchor pagebreak", 
      "searchreplace wordcount visualblocks visualchars code fullscreen", 
      "insertdatetime media nonbreaking save table contextmenu directionality", 
      "emoticons template paste textcolor colorpicker textpattern imagetools" 
     ], 

     content_css: '[@appbase]app/template/css/bootstrap.min.css, [@appbase]app/template/css/div.highlighting.css' // includes both css files in header 

    }); 
    tinyMCE.execCommand('mceRemoveEditor', true, '#WysyWig'); 
    tinyMCE.execCommand('mceAddEditor', false, '#WysyWig'); 
}); 


} 

Ale po dodaniu kolejnego dodatkowego edytora poprzez onclick wywołania AJAX zostanie wykonana perfekcyjnie i redaktor zostanie dodany do bazy danych i prawie wszystko działa poprawnie. .. z wyjątkiem ... Redaktorzy TinyMCE znikają.

Zrobiłem kilka wyszukiwania i pierwszą rzeczą, jaką odkryłem, że nie zrobiłem było usunięcie edytora. Ponieważ trzeba to zrobić przed ponownym zainicjowaniem.

więc dodałem:

tinyMCE.execCommand('mceRemoveEditor', true, '#WysyWig'); 

Niestety to nie robi żadnej różnicy. Więc prawdopodobnie używam tego źle.

Używam TinyMCE 4.0

Mam nadzieję, że ktoś widzi mój błąd i możemy kontynuować podróż. TIAD !!

P.S. [@appbase] jest zastępowany przez PHP, aby wyświetlić absolutną ścieżkę do skryptu. :-)

+0

Czy rozmowa Ajax powrocie wiele pól redaktor, czy tylko nowe? –

Odpowiedz

2

Powinieneś usunąć edytory przed dodaniem nowych ... Jeśli dobrze przeczytam twój kod, próbujesz usunąć redaktorów zaraz po ich utworzeniu.

Od .get() jest asynchroniczny, usunięcie może stało się przed ich utworzeniem, ale nie o to nam chodziło.

Zacznę od usunięcia wszystkich edytorów z #SerenePageEditors przed zastąpieniem treści HTML. Prawdopodobnie z rozmowy, która wygląda tak:

tinymce.remove('#SerenePageEditors .EditorField'); 

stosowane na kodzie, to będzie wyglądać następująco:

function InitializeTinyMCE() { 
    /// This can also be positioned outside a function in the document ready section 
    $.get("[@appbase]sereneadmin/pages/?SetAjaxCall=editor&page=[@editparam]", function (EditorHTML) { 

     tinymce.remove('#SerenePageEditors .EditorField'); 

     $("#SerenePageEditors").html(EditorHTML).find('.EditorField').tinymce({ 
      script_url: '[@appbase]script/tinymce/js/tinymce/tinymce.jquery.min.js', 
      plugins: [ 
       "advlist autolink lists link image charmap print preview hr anchor pagebreak", 
       "searchreplace wordcount visualblocks visualchars code fullscreen", 
       "insertdatetime media nonbreaking save table contextmenu directionality", 
       "emoticons template paste textcolor colorpicker textpattern imagetools" 
      ], 

      content_css: '[@appbase]app/template/css/bootstrap.min.css, [@appbase]app/template/css/div.highlighting.css' // includes both css files in header 

     }); 
    }); 
} 
+0

Co otrzymuję przy użyciu tego kodu to: ReferenceError: tinymce nie jest zdefiniowany –

+0

Dalej używam TinyMCE 4.x tinymce.remove ('# SerenePageEditors .EditorField'); Wierzę, że to nie zadziała i powinno być maleMCE.execCommand, prawda? –

+0

W zależności od szczegółów konfiguracji. Opieram się na dokumentach TinyMCE 4.x http://www.tinymce.com/wiki.php/api4:method.tinymce.remove.static. Jeśli masz aktywny link, na którym działa Twój kod, mogłem zobaczyć w odpowiednim kontekście. Jeśli twoje wywołanie 'execCommand' do mceRemoveEditor jest poprawne (z tego co widzę, to nie wydaje się pasować do dokumentacji i wydaje się, że celuje tylko w węzły redaktorów o id" WysyWyg', ale mogę się mylić), zawsze możesz spróbować zadzwonić ** przed ** dodaniem nowych edytorów. –

Powiązane problemy