我为此动态创建和销毁textareas。但是,当我创建一个textarea然后在tinymce中创建它的一个实例时 - 然后再次返回页面,它不起作用。我发现解决方案是简单地删除任何现有的同名实例,但我想知道是否可以在启动时执行它。如何在启动时删除所有的tinymce实例?
在此先感谢!
我为此动态创建和销毁textareas。但是,当我创建一个textarea然后在tinymce中创建它的一个实例时 - 然后再次返回页面,它不起作用。我发现解决方案是简单地删除任何现有的同名实例,但我想知道是否可以在启动时执行它。如何在启动时删除所有的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的实例。否则,您的编辑器窗口可能会保持白色,或者根本无法编辑。
您可以在JavaScript的onload功能或保存前一个实例的形式使用这些线
if (tinyMCE.getInstanceById(id) != null)
{
tinyMCE.execCommand('mceRemoveControl', true, id);
}
其中id是textarea的或输入的id,进入TinyMCE的存在
正如前面@ P6345uk在评论中表示,tinymce.editors.length集合的大小正在减小。
因为来自@Thariama的代码也没有为我工作,所以我没有更新,并做出了这些行。为我工作,也尝试一下。
var length = tinymce.editors.length;
if(length>0){
for (var i=0; i<length; i++) {
tinyMCE.execCommand('mceRemoveControl',false, tinymce.editors[0].id);
};
}
我的同事发现贝尼一个聪明的解决方案,以消除所有现存TinyMCEs:
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]);
}
对我的作品此解决方案:
tinymce.editors = [];
S O,可以先清除编辑阵列并重新初始化使用init编辑:
tinymce.editors = [];
tinymce.init({
selector: 'textarea.tinymce',
...
});
因为tinymce.editors.length集合大小 – P6345uk 2013-07-15 14:40:59
减少@ P6345uk这是行不通的:正确的,我把这个考虑在内现在 – Thariama 2013-07-15 14:54:30
很酷很快 – P6345uk 2013-07-15 15:15:03