2012-04-09 19 views
5

Ich habe initialisiert tinyMCE wie so:vollständig entfernen 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 
}); 

Der obige Code funktioniert perfekt. Das Problem ist, wenn ich versuche, tinyMCE zu entfernen.

Mein entfernen Code ist:

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

ich auch versucht habe:

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

und

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

Die erste nichts zu tun scheint. Die letzten beiden geben Sie mir diesen Fehler:

Uncaught ReferenceError: t is not defined

Obwohl tinymce durch das HTML-Dokument geladen wird, ich bin Laden ein anderes Skript:

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

Popup ein Verweis auf das Popup, in dem tinymce geladen ist . Es ist einfach ein Div, das mit jQuery erstellt wird. Der Inhalt des Div wird mit jquery ajax geladen.

Die editContent.js sieht wie folgt aus:

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() entfernen()' sollte es tun.. Können Sie einen Testfall auf [jsFiddle] (http://jsfiddle.net) veröffentlichen, wo Ihr Problem reproduziert wird? – mekwall

+0

Ich habe meine erste Frage bearbeitet, um Ihnen weitere Details zu geben. Ich kann jsFiddle nicht benutzen, weil es zu viele externe Teile benötigt. – JPardoe

+0

genannt tinyMCE.remove(); und es gab einen Fehler: "Uncaught TypeError: Kann die Eigenschaft 'id' von undefined nicht lesen" in Zeile 11264 von tiny_mce_src.js – JPardoe

Antwort

0

versuchen

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

wo 'Text' ist die ID Ihres Editor

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

versuchte, dass - gleicher Fehler: Uncaught Reference: t nicht definiert Ich habe die _src Version von tinymce aufgenommen werden und der Fehler in Zeile 12318 auftritt: 'verbergen: function() { \t \t \t var self = dies, doc = t.getDoc(); Uncaught Reference: t ist nicht definiert \t \t \t // Ein Fehler wurde behoben, wo IE einen blinkenden Cursor aus dem Editor übrig bleiben \t \t \t if (ISIE && doc) \t \t \t \t doc.execCommand ('SelectAll') ; \t \t \t // Wir speichern müssen, bevor wir verstecken, so ist Safari Absturz nicht \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

Problem gelöst. Für diejenigen, die interessiert sind, ich tinyMCE im HTML-Dokument geladen wird, dann, wenn ich es initialisieren benötigt, ich habe:

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'); 
    } 
}); 

Der obige Code wird jedes Mal, wenn der TinyMCE Editor aufgerufen wird, erforderlich. Ich entfernte es dann, als ich das Popup wie folgt schloss:

tinyMCE.remove('text'); 
4

Dies scheint ein Problem mit tinyMCE seit Version 3.5b3. Es funktioniert in Version 3.5b2.

Siehe my fiddle Beispiel.

Sie werden feststellen, dass es gut geladen und entladen wird. Aber ändern Sie die Version zu Edge oder 3.5b3 und Sie erhalten den Fehler beim Entladen.

Wie auf der tinyMCE bug site erklärte:

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

Danke. Das hat das Problem für mich gelöst. –

Verwandte Themen