2013-02-20 6 views
6

Quindi mi sto imbattendo in questa situazione.Problemi con l'aggiornamento AJAX multiplo e TinyMCE

<SCRIPT src="../js/tiny_mce/tiny_mce.js"></script> 
<SCRIPT type="text/javascript"> 
    tinyMCE.init({ 
     mode : "textareas", 
     theme : "simple" 
    }); 
</SCRIPT> 
<SCRIPT src="../js/admin.js"></script> 

Quanto sopra è chiamato sulla mia pagina PHP.

Sto quindi chiamando

var request = $.ajax(
{ 
    url:"getEvents.php", 
    type:"POST", 
    data:{'method':'showevents'}, 
    dataType:"html" 
    }).done(function(msg){ 
     $('#eventlistbody').html(msg); 
    }); 

    setTimeout(
     function(){ 
      $(".mceSimple").each(function(){ 
       tinyMCE.execCommand("mceAddControl",false, this.id); 
      }) 
    },2000); 

questa carica un mucchio di textareas ..... il TinyMCE caricherà su tutte le aree di testo la prima volta che ho returns..when cliccare sul reload che esegue di nuovo quanto sopra e restituisce le aree di testo a cui non è più collegato il tinyMCE. Non so perché funzioni la prima volta e non le volte successive.

risposta

12

È necessario arrestare correttamente lo stagno prima di ricaricarlo per poter reinizializzare un editor di tinymce dopo che è stato effettuato il ricaricamento. Questo è necessario perché a tinymce non piace essere trascinato attorno al dom. E le istanze di editor inizializzate possono avere un unico ID univoco (usando il reload forzerà tinymce a provare a inizializzare un secondo editor con lo stesso id, che fallirà).

Tinymce3: Per arrestare un uso un'istanza edtor:

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

reinizializzare uso

tinymce.execCommand('mceAddControl',true, editor_id); 

Tinymce4: Per arrestare un uso un'istanza edtor:

tinymce.execCommand('mceRemoveEditor',true,editor_id); 

per reinizializzare uso

tinymce.execCommand('mceAddEditor',true,editor_id); 
+1

grazie per le informazioni che ho scoperto che verso le 3 del mattino di ieri e non ho avuto il tempo di inviare una risposta. Grande informazione – BostonMacOSX

+0

Ho provato questo senza successo. C'è qualche aggiornamento a questo? – dpDesignz

+1

@dpDesignz: questa soluzione funziona solo per tinymce3, per renderlo applicabile a tinymce4 è necessario sostituire mceRemoveControl con mceRemoveEditor e mceAddControl con mceAddEditor. vedere la mia risposta aggiornata – Thariama

2

Per me tinyMCE.remove (editor_id) ha funzionato.

0

Tinymce4: Per spegnere un uso un'istanza edtor:

tinymce.remove(); 

o indicare un ID univoco

tinymce.execCommand('mceRemoveEditor',true,editor_id); 

reinizializzare uso

tinymce.init(conftinymce); 

o indicare uno ID unico

tinymce.execCommand('mceAddEditor',true,editor_id);