如何在启动时删除所有tinymce实例?

Le *_*vre 11 javascript jquery dom tinymce

我正在为此目的动态创建和销毁textareas.但是,当我创建一个textarea然后在tinymce中创建它的一个实例 - 然后再次返回页面时,它不起作用.我发现,解决办法是简单地删除相同名称的任何现有实例,但我不知道是否有可能只是做它在启动时.

提前致谢!

Tha*_*ama 14

您必须确保您创建一个小实例的textareas或其他元素需要具有不同的ID.

要删除所有可能使用的tinymce实例(tinymce3):

        for (var i = tinymce.editors.length - 1 ; i > -1 ; i--) {
            var ed_id = tinymce.editors[i].id;
            tinyMCE.execCommand("mceRemoveControl", true, ed_id);
        }
Run Code Online (Sandbox Code Playgroud)

对于tinymce4使用:

        for (var i = tinymce.editors.length - 1 ; i > -1 ; i--) {
            var ed_id = tinymce.editors[i].id;
            tinyMCE.execCommand("mceRemoveEditor", true, ed_id);
        }
Run Code Online (Sandbox Code Playgroud)

当您尝试重新初始化一个tinymce实例时,请确保以正确的方式关闭实例.否则,您的编辑器窗口可能会保持白色或根本不可编辑.


phl*_*egx 11

对我来说,这个解决方案:

 tinymce.editors = [];
Run Code Online (Sandbox Code Playgroud)

因此,您可以先清除编辑器数组,然后使用init重新初始化编辑器:

 tinymce.editors = [];
 tinymce.init({
    selector: 'textarea.tinymce',
    ...
 });
Run Code Online (Sandbox Code Playgroud)


mal*_*kan 6

我的同事Beni发现了一个智能解决方案来删除所有现有的TinyMCE:

if(typeof(tinyMCE) !== 'undefined') {
  var length = tinyMCE.editors.length;
  for (var i=length; i>0; i--) {
    tinyMCE.editors[i-1].remove();
  };
}
Run Code Online (Sandbox Code Playgroud)


jzi*_*011 5

这就是我正在使用的并且看起来工作正常:

while (tinymce.editors.length > 0) {
    tinymce.remove(tinymce.editors[0]);
}
Run Code Online (Sandbox Code Playgroud)