2012-04-09 15 views
5

he inicializado TinyMCE así:eliminar completamente jQuery TinyMCE

$('#text').tinymce({ 
    // Location of TinyMCE script, optional, already loaded in page. 
    script_url : '../adminContent/js/tiny_mce/tiny_mce.js', 

    // General options 
    theme : "advanced", 
    plugins : "table,advimage,advlink,iespell,inlinepopups,preview,contextmenu,paste,visualchars", 

    // Theme options 
    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,forecolor,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image", 
    theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,removeformat,cleanup,code,|,preview,tablecontrols,|,hr,visualaid,|,charmap,iespell", 
    theme_advanced_buttons3 : "", 

    theme_advanced_toolbar_location : "top", 
    theme_advanced_toolbar_align : "left", 
    theme_advanced_statusbar_location : "bottom", 
    theme_advanced_resizing : true 
}); 

El código anterior funciona perfectamente. El problema es cuando trato de eliminar tinyMCE.

Mi código de eliminación es:

$('#text').tinymce().execCommand('mceRemoveControl', false, 'text'); 

También he intentado:

$('#text').remove(); 

y

$('#text').tinymce().remove(); 

El primero no parece hacer nada. Los dos últimos me da este error:

Uncaught ReferenceError: t is not defined

Aunque tinymce se carga por el documento HTML, Estoy cargando otro script usando:

$.getScript(viewPath + '/mod/adminContent/js/editContent.js', function(){ 
    initEditContent(popup); 
}); 

emergente es una referencia a la ventana emergente en la que tinymce está cargado . Es simplemente un div que se crea usando jquery. Los contenidos del div se cargan usando jquery ajax.

El editContent.js se parece a esto:

var contentID; 
function initEditContent(popup){ 
    contentID = $('#contentID').val(); 

    tinyMCE.execCommand("mceAddControl", true, 'text'); 

    setTimeout(reposition, 50); 
    setTimeout(reposition, 150); 
    setTimeout(reposition, 250); 

    // Submit form 
    $('#editTextForm').ajaxForm(
    { 
     // Before submit 
     beforeSubmit: function(){ 
      //setPopupMessage(popup, '<div id="loading"><img src="../../img/loading.gif" />&nbsp;Please wait...</div>'); 
     }, 

     // Once submit completed 
     success: function(responseText){ 
      tinyMCE.execCommand("mceRemoveControl", true, 'text'); 
      //closePopup(popup); 

      // Update button with new data 
      $('#' + contentID).html(responseText); 
     } 
    }); 
} 
+0

'.tinymce() remove()' debe hacer el truco.. ¿Puedes publicar un caso de prueba en [jsFiddle] (http://jsfiddle.net) donde se reproduce tu problema? – mekwall

+0

He editado mi pregunta inicial para darle más detalles. No puedo usar jsFiddle, me temo porque se requieren demasiadas partes externas. – JPardoe

+0

llamado tinyMCE.remove(); y dio un error: "UnEught TypeError: No se puede leer la propiedad 'id' de undefined" en la línea 11264 de tiny_mce_src.js – JPardoe

Respuesta

0

tratar

$('#text').tinymce().execCommand('mceRemoveControl', true, 'text'); 

donde 'texto' es el ID de su editor de

<textarea id='text' ..... 
+0

intentado que - el mismo error: no detectada ReferenceError: t no se define He incluido la versión _src de tinymce y el error se produce en 12,318 línea: 'ocultar: function() { \t \t \t auto var = esto, doc = t.getDoc(); no detectada ReferenceError: t no está definido \t \t \t // Corregido un fallo donde IE tiene un cursor parpadeante izquierda desde el editor \t \t \t si (Isie && doc) \t \t \t \t doc.execCommand ('Seleccionar Todo') ; \t \t \t // Hay que salvar antes de que esconderse para Safari no se cuelga \t \t \t self.save(); \t \t \t DOM.hide (self.getContainer()); \t \t \t DOM.setStyle (self.id, 'display', self.orgDisplay); \t \t}, ' – JPardoe

1

Problema resuelto. Para aquellos que estén interesados, he cargado TinyMCE en el documento HTML, entonces cuando lo necesitaba para inicializar, lo hice:

tinyMCE.init({ 
    mode : "textareas", 
    // General options 
    theme : "advanced", 
    plugins : "table,advimage,advlink,iespell,inlinepopups,preview,contextmenu,paste,visualchars", 

    // Theme options 
    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,forecolor,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image", 
    theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,removeformat,cleanup,code,|,preview,tablecontrols,|,hr,visualaid,|,charmap,iespell", 
    theme_advanced_buttons3 : "", 

    theme_advanced_toolbar_location : "top", 
    theme_advanced_toolbar_align : "left", 
    theme_advanced_statusbar_location : "bottom", 
    theme_advanced_resizing : true, 

    oninit: function(){ 
     alert('tinyMCE loaded'); 
    } 
}); 

El código anterior se llama cada vez que se requiere el editor TinyMCE. Luego lo eliminé cuando cerré la ventana emergente así:

tinyMCE.remove('text'); 
4

Parece un problema con tinyMCE desde la versión 3.5b3. Funciona en la versión 3.5b2.

Véase my fiddle ejemplo.

Notarás que carga y descarga bien. Pero cambie la versión a edge o 3.5b3 y obtendrá el error al descargar.

Como se indica en la tinyMCE bug site:

Description of problem:

Javascript error on line 13518. t is not defined.

Steps to reproduce:

  1. Call tinyMCE.execCommand('mceRemoveControl', false, idOfTextarea);

Problem:

In 3.5b3 you renamed t to self, but didn't rename the used variable in the same line to get the doc.

Solution:

Change line 13518 (in function hide()) to: var self = this, doc = self.getDoc();

+0

Gracias. Esto resolvió mi problema. –

Cuestiones relacionadas