获得' NS_ERROR_UNEXPECTED'而在Mozilla中使用tinymce

时间:2015-10-22 10:26:33

标签: jquery firefox 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>

4 个答案:

答案 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) {}
  });
}

希望这对某人有帮助。