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

时间:2010-09-11 21:05:16

标签: javascript jquery dom tinymce

我正在为此目的动态创建和销毁textareas。但是,当我创建一个textarea然后在tinymce中创建它的一个实例 - 然后再次返回页面时,它不起作用。我发现解决方案是简单地删除任何同名的现有实例,但我想知道是否可以在启动时执行此操作。

提前致谢!

7 个答案:

答案 0 :(得分: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);
        }

对于tinymce4使用:

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

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

答案 1 :(得分:10)

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

 tinymce.editors = [];

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

重新初始化编辑器
 tinymce.editors = [];
 tinymce.init({
    selector: 'textarea.tinymce',
    ...
 });

答案 2 :(得分:6)

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

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

答案 3 :(得分:1)

这就是我正在使用的,似乎工作正常:

while (tinymce.editors.length > 0) {
    tinymce.remove(tinymce.editors[0]);
}

答案 4 :(得分:0)

您可以在javascript的onload函数中使用这些行,或者在保存前一个实例的表单

if (tinyMCE.getInstanceById(id) != null)
{
  tinyMCE.execCommand('mceRemoveControl', true, id);
}

其中id是textarea的id或者tinyMce存在的输入

答案 5 :(得分:0)

正如之前@ P6345uk在评论中所说,tinymce.editors.length集合的规模正在缩小。

因为来自@Thariama的代码对我来说也没有用,所以我做了lil更新并制作了这些代码。为我工作,也尝试一下。

var length = tinymce.editors.length;
if(length>0){
    for (var i=0; i<length; i++) {
        tinyMCE.execCommand('mceRemoveControl',false, tinymce.editors[0].id); 
    };
}

答案 6 :(得分:0)

TinyMCE V5

使用以下方法删除所有实例

tinymce.remove();

更多信息,请参见this