我在我的应用程序中使用tinymce来获得丰富的文本框体验,我在Mozilla中使用它时遇到了这个奇怪的问题。 它第一次使用时效果很好,但如果我第二次加载相同的tinymce实例,它会在控制台屏幕中显示以下错误。
NS_ERROR_UNEXPECTED
请建议解决方案,如果有,下面是我正在使用的代码:
<script type="javascript">
tinymce.remove();
jQuery('#tinymce').tinymce({
height: 250,
width: 750,
entity_encoding: "raw",
encoding: "xml",
force_br_newlines: false,
force_p_newlines: false,
forced_root_block: 'div',
statusbar: false,
theme: 'modern',
menubar: false,
plugins: "mention " + plugins,
toolbar1: toolbar1,
toolbar2: toolbar2
});
</script>
答案 0 :(得分:3)
要解决此问题,只需在try catch中包含tinymce.remove()
即可。
try {
tinymce.remove("#id");
} catch (e) {}
这个问题的原因是虽然DOM中不存在编辑器,但tinyMCE脚本认为它仍然在那里。您可以通过在tinymce.remove()
上放置一个断点并运行tinymce.editors.length
来检查它 - 即使编辑器不存在,它也会返回一个正值。由于某些未知原因,问题仅出现在Firefox中。
答案 1 :(得分:1)
这个错误令人讨厌。这与比赛条件有关。 尝试在重新启动编辑器之前将删除命令放在setTimeout-Block中,它应该可以正常工作。
setTimeout(function(){
var ed = tinymce.get('your_editor_id');
if (ed) ed.remove();
}, 1);
更新:然后尝试不同的方法:
var ed = tinymce.get('your_editor_id');
if (ed) ed.remove();
setTimeout(function(){
jQuery('#tinymce').tinymce({
height: 250,
width: 750,
entity_encoding: "raw",
encoding: "xml",
force_br_newlines: false,
force_p_newlines: false,
forced_root_block: 'div',
statusbar: false,
theme: 'modern',
menubar: false,
plugins: "mention " + plugins,
toolbar1: toolbar1,
toolbar2: toolbar2
});
}, 1);
答案 2 :(得分:1)
while (tinymce.editors.length > 0) {
try {
tinymce.remove(tinymce.editors[0]);
} catch (e) {
// alert(e);
}
}
尝试上面的代码。应该可以。
答案 3 :(得分:0)
就我而言,所有建议都行不通。
我使用以下代码解决了Firefox和NS_ERROR_UNEXPECTED的问题:
if( typeof window.tinymce != 'undefined' && $(window.tinymce.editors).length > 0 ){
$(window.tinymce.editors).each(function(idx) {
try {
tinymce.remove(idx);
} catch (e) {}
});
}
希望这对某人有帮助。