javascript - TinyMCE 在加载 AJAX 的 DIV 中重新初始化后消失

标签 javascript jquery html ajax tinymce-4

与此同时,我已经走得更远了。但是,我仍然遇到一个问题。

情况是这样的:

我有一个包含多个文本区域的 div,这些文本区域正在使用 JQuery AJAX 调用加载。

初始初始化使用以下代码效果很好:

function InitializeTinyMCE() {

/// This can also be positioned outside a function in the document ready section
$.get("[@appbase]sereneadmin/pages/?SetAjaxCall=editor&page=[@editparam]", function (EditorHTML) {
    $("#SerenePageEditors").html(EditorHTML).find('.EditorField').tinymce({
        script_url: '[@appbase]script/tinymce/js/tinymce/tinymce.jquery.min.js',
        plugins: [
            "advlist autolink lists link image charmap print preview hr anchor pagebreak",
            "searchreplace wordcount visualblocks visualchars code fullscreen",
            "insertdatetime media nonbreaking save table contextmenu directionality",
            "emoticons template paste textcolor colorpicker textpattern imagetools"
        ],

        content_css: '[@appbase]app/template/css/bootstrap.min.css, [@appbase]app/template/css/div.highlighting.css'    // includes both css files in header

    });
    tinyMCE.execCommand('mceRemoveEditor', true, '#WysyWig');
    tinyMCE.execCommand('mceAddEditor', false, '#WysyWig');
});


}

但是在通过 onclick 添加另一个额外的编辑器之后,AJAX 调用完美地执行并且编辑器被添加到数据库中并且几乎一切运行正常......除了......TinyMCE 编辑器消失了。

我做了一些搜索,发现我没有做的第一件事就是删除了编辑器。因为这需要在重新初始化之前完成。

所以我补充说:

    tinyMCE.execCommand('mceRemoveEditor', true, '#WysyWig');

不幸的是,这没有任何区别。 所以可能我用错了。

我正在使用 TinyMCE 4.0

我希望有人看到我的错误,我们可以继续旅程。 TIAD!!

附言[@appbase] 被 PHP 取代以显示脚本的绝对路径。 :-)

最佳答案

您应该在添加新编辑器之前删除编辑器...如果我没看错您的代码,您正试图在创建编辑器后立即删除它们。

由于 .get() 是异步的,删除操作可能发生在它们被创建之前,但这不是我们的目标。

在替换 HTML 内容之前,我会先从 #SerenePageEditors 中删除所有编辑器。可能使用如下所示的调用:

tinymce.remove('#SerenePageEditors .EditorField');

应用于您的代码,它看起来像这样:

function InitializeTinyMCE() {
    /// This can also be positioned outside a function in the document ready section
    $.get("[@appbase]sereneadmin/pages/?SetAjaxCall=editor&page=[@editparam]", function (EditorHTML) {

        tinymce.remove('#SerenePageEditors .EditorField');

        $("#SerenePageEditors").html(EditorHTML).find('.EditorField').tinymce({
            script_url: '[@appbase]script/tinymce/js/tinymce/tinymce.jquery.min.js',
            plugins: [
                "advlist autolink lists link image charmap print preview hr anchor pagebreak",
                "searchreplace wordcount visualblocks visualchars code fullscreen",
                "insertdatetime media nonbreaking save table contextmenu directionality",
                "emoticons template paste textcolor colorpicker textpattern imagetools"
            ],

            content_css: '[@appbase]app/template/css/bootstrap.min.css, [@appbase]app/template/css/div.highlighting.css'    // includes both css files in header

        });
    });
}

关于javascript - TinyMCE 在加载 AJAX 的 DIV 中重新初始化后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33668573/

相关文章:

javascript - MomentJS 检查是否为第二天并间隔几天

javascript - 无法使用 Javascript 访问 JSON 文件

javascript - Cookie 问题 - cookie 未定义

javascript - 如何使用jquery检查属性为="admin_emal"的标签是否存在?

javascript - 按下 Shift 键时防止 keyDown 事件

javascript - 如何禁用非事件滚动条,但不是永久禁用?

javascript - Jquery使用类来绑定(bind)链接和图像

html - Fancybox 导致分屏布局滚动位置重置为顶部

php - 如果从数据库端检查的验证是正确的,如何在 PHP 中隐藏表单提交的分区?

php - 从 javascript 向 php 传递参数