Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I remove tinyMCE and then re-add it?

I am trying to add the tinyMCE editor to my page, remove it, then add it again but am getting errors.

When I run Part A, then Part B, Than Part A again I get the error:

Error: g.win.document is null Source File: tiny_mce/tiny_mce.js Line: 1 

Part A

tinyMCE.init({     'mode' : 'exact',     'elements' : '" + ctrl.ID + "Editor',     'plugins' : 'insertdatetime,TVCMSLink,TVCMSImage',     'theme' : 'advanced',     'theme_advanced_layout_manager' : 'SimpleLayout',     'theme_advanced_buttons1' : 'backcolor, forecolor, |, bold, underline, strikethrough, |, numlist, bullist, charmap, |, undo, redo, |, anchor, link, tvlink, unlink',     'theme_advanced_buttons2' : '',     'theme_advanced_buttons3' : '' }); 

Part B

tinyMCE.getInstanceById('" + ctrl.ID + "Editor').remove(); 

Edit:

Below is the full JavaScript function. The first time through it opens the dialog and works, the contents is in the editor and there is no error. When I click the close button, the dialog is closed. When I run the function again, the dialog displays but the editor is empty and there is the above error.

function show_HP1B0() { $('.EditLink').hide(); $.ajax({     type: 'post',     url: 'genericHandler.ashx',     data: 'cmd=select&tableName=ExtraBlocks&id=4',     dataType: 'json',     success: function(data) {         $('#HP1B0Editor').html(data['rows'][0]['Content']);         alert($('#HP1B0Editor').html());         tinyMCE.init({                 'mode' : 'exact',              'elements' : 'HP1B0Editor',              'plugins' : 'insertdatetime,Link,Image',             'theme' : 'advanced',             'theme_advanced_layout_manager' : 'SimpleLayout',             'theme_advanced_buttons1' : 'backcolor, forecolor, |, bold, underline, strikethrough, |, numlist, bullist, charmap, |, undo, redo, |, anchor, link, tvlink, unlink',             'theme_advanced_buttons2' : '',             'theme_advanced_buttons3' : ''         });         var dlg = $('#ctl00_EXTRA_HTML_0_HP1B0Editor').dialog({             modal: false,             draggable: false,             position: 'center',             zIndex: 99999,  // Above the overlay             width: 370,             title: 'Content Block Editor',             closeText: '',             open: function () {                 $('body').css('overflow', 'hidden');                 if ($.browser.msie) { $('html').css('overflow', 'hidden'); } $('<div>').attr('id', 'loader').appendTo('body').show();             },             close: function () { $('body').css('overflow', 'auto'); if ($.browser.msie) { $('html').css('overflow', 'auto'); } $('#loader').remove(); },             buttons: {                 'Save': function () {                     tinyMCE.getInstanceById('HP1B0Editor').remove();                     $('.EditLink').show();                     $(this).dialog('close');                 },                 'Cancel': function () {         alert('HP1B0Editor');                     tinyMCE.getInstanceById('HP1B0Editor').remove();                     $('.EditLink').show();                     $(this).dialog('close');                 }             }         }).parent();         dlg.appendTo(jQuery('form:first'));     },     error: function(data) {         $('.EditLink').show();         $('#HP1B0Editor').html('Error');     } }); } 
like image 781
Justin808 Avatar asked Jan 10 '11 21:01

Justin808


People also ask

How do I uninstall TinyMCE editor?

Use tinymce. remove() method to remove TinyMCE editor from the HTML element and again call tinymce. init() on the selector to reinitialize.

How do I reinitialize TinyMCE editor?

TinyMCE editor stops working after the part of the page it resides on is relocated (using removeChild() and insertBefore() ) to other page's location. It is known bug and as was suggested here could be fixed by removing and adding the editor back. It works perfect when there only one editor on the page.

How do I remove TinyMCE from Wordpress?

You can try adding add_filter ( 'user_can_richedit' , create_function ( '$a' , 'return false;' ) , 50 ); to your functions. php file. Show activity on this post. You may set the tinymce configuration parameter mode to none .


1 Answers

To cleanly remove an editor instance and avoid any errors use:

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

To reinitialize the instance use:

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

Be aware that when moving TinyMCE editors in the DOM you need to removeControl and addControl too, otherwise it results in JS errors.


As of TinyMCE 4 the methods to remove and reinitialize an instance are now...

To cleanly remove an editor instance and avoid any errors use:

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

To reinitialize the instance use:

tinymce.EditorManager.execCommand('mceAddEditor',true, editor_id); 
like image 105
Thariama Avatar answered Sep 30 '22 05:09

Thariama