【发布时间】:2010-09-11 21:05:16
【问题描述】:
为此,我正在动态创建和销毁文本区域。但是,当我创建一个 textarea 然后在 tinymce 中创建它的一个实例时——然后再次返回该页面,它就不起作用了。我发现解决方案是简单地删除同名的任何现有实例,但我想知道是否可以在启动时执行此操作。
提前致谢!
【问题讨论】:
标签: javascript jquery dom tinymce
为此,我正在动态创建和销毁文本区域。但是,当我创建一个 textarea 然后在 tinymce 中创建它的一个实例时——然后再次返回该页面,它就不起作用了。我发现解决方案是简单地删除同名的任何现有实例,但我想知道是否可以在启动时执行此操作。
提前致谢!
【问题讨论】:
标签: javascript jquery dom tinymce
您必须确保为其创建小实例的 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 实例时,请确保以正确的方式关闭实例。否则,您的编辑器窗口可能会保持白色或根本不可编辑。
【讨论】:
对我来说这个解决方案有效:
tinymce.editors = [];
所以,你可以先清除 editors 数组,然后用 init 重新初始化编辑器:
tinymce.editors = [];
tinymce.init({
selector: 'textarea.tinymce',
...
});
【讨论】:
我的同事 Beni 发现了一个聪明的解决方案来删除所有现有的 TinyMCE:
if(typeof(tinyMCE) !== 'undefined') {
var length = tinyMCE.editors.length;
for (var i=length; i>0; i--) {
tinyMCE.editors[i-1].remove();
};
}
【讨论】:
这是我正在使用的,并且看起来工作正常:
while (tinymce.editors.length > 0) {
tinymce.remove(tinymce.editors[0]);
}
【讨论】:
【讨论】:
您可以在 javascript 的 onload 函数或先前实例的保存表单中使用这些行
if (tinyMCE.getInstanceById(id) != null)
{
tinyMCE.execCommand('mceRemoveControl', true, id);
}
其中 id 是存在 tinyMce 的 textarea 或输入的 id
【讨论】: