2012-04-09 5 views
5

Mam zainicjowane TinyMCE tak:całkowicie usunąć 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 
}); 

Powyższy kod działa idealnie. Problem polega na tym, że próbuję usunąć tinyMCE.

Mój kod usuń to:

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

Ja również próbowałem:

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

i

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

Pierwszy z nich nie wydają się nic zrobić. Dwa ostatnie dać mi ten błąd:

Uncaught ReferenceError: t is not defined

Chociaż TinyMCE jest ładowany w dokumencie HTML, wczytuję inny skrypt przy użyciu:

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

popup jest nawiązaniem do wyskakującego okienka, w którym TinyMCE jest załadowany . Jest to po prostu element div, który jest tworzony przy użyciu jquery. Zawartość div są ładowane za pomocą ajax jquery.

editContent.js wygląda następująco:

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() usunąć()' powinno załatwić sprawę.. Czy możesz opublikować test na [jsFiddle] (http://jsfiddle.net), gdzie twój problem jest reprodukowany? – mekwall

+0

Zmieniłem moje pierwsze pytanie, aby podać więcej szczegółów. Nie można użyć jsFiddle Obawiam się, ponieważ wymaganych jest zbyt wiele zewnętrznych części. – JPardoe

+0

o nazwie tinyMCE.remove(); i spowodował błąd: "Uncaught TypeError: Nie można odczytać właściwości 'id' nieokreślonego" na linii 11264 tiny_mce_src.js – JPardoe

Odpowiedz

0

spróbować

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

gdzie 'tekst' to identyfikator edytora

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

Tried to - ten sam błąd: Uncaught ReferenceError: t nie jest zdefiniowana mam włączone wersję _src z TinyMCE i błąd występuje na linii 12318: 'hide: function() { \t \t \t var własnym = to, doc = t.getDoc(); Uncaught ReferenceError: t nie jest zdefiniowana \t \t \t // Naprawiono błąd, gdzie IE ma migający kursor w lewo z edytora \t \t \t if (isIE && DOC) \t \t \t \t doc.execCommand ('selectAll') ; \t \t \t // Musimy uratować przed ukryć tak Safari nie psuje \t \t \t self.save(); \t \t DOM.hide (self.getContainer()); \t \t \t DOM.setStyle (self.id, "display", self.orgDisplay); \t \t}, ' – JPardoe

1

Problem rozwiązany. Dla tych, którzy są zainteresowani, załadowałem TinyMCE w dokumencie HTML, wtedy, kiedy potrzebne do jego zainicjowania, zrobiłem:

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

Powyższy kod jest wywoływana za każdym razem wymagana jest edytora TinyMCE. Następnie usuwa się go, kiedy zamknął okienko tak:

tinyMCE.remove('text'); 
4

To wygląda na problem z TinyMCE od wersji 3.5b3. Działa w wersji 3.5b2.

Zobacz przykład: my fiddle.

Zauważysz, że ładuje się i rozładowuje się dobrze. Ale zmień wersję na krawędź lub 3.5b3, a otrzymasz błąd podczas rozładowywania.

Jak stwierdzono na 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

Dziękuję. To rozwiązało problem dla mnie. –