在 Mozilla 中使用 tinymce 时出现“NS_ERROR_UNEXPECTED”

kar*_*ara 6 firefox jquery tinymce

我在我的应用程序中使用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>
Run Code Online (Sandbox Code Playgroud)

Pra*_*mus 7

要解决这个问题,只需将其包裹tinymce.remove()在 try catch 中即可。

    try {
        tinymce.remove("#id");
    } catch (e) {}
Run Code Online (Sandbox Code Playgroud)

这个问题的原因是,虽然编辑器不存在于 DOM 中,但tinyMCE 脚本认为它仍然存在。您可以通过放置断点tinymce.remove()并运行来检查它tinymce.editors.length- 即使编辑器不存在,它也会返回一个正值。由于某种未知原因,该问题仅出现在 Firefox 中。


Tha*_*ama 0

这个错误很烦人。这与赛车状况有关。在重新初始化编辑器之前尝试将删除命令放入 setTimeout-Block 中,它应该可以工作。

setTimeout(function(){
    var ed = tinymce.get('your_editor_id');
    if (ed) ed.remove();
}, 1);
Run Code Online (Sandbox Code Playgroud)

更新:然后尝试不同的东西:

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);
Run Code Online (Sandbox Code Playgroud)