TinyMCE只加载一次 - 使用AJAX添加/删除textarea

时间:2014-05-15 15:54:07

标签: jquery ajax tinymce

这是我的代码:

function OpenContentBuilder()
{

    $.post("tools/tools_builder.php", {
        _open_content_builder : 1
    }, function(data)
    {
        $("#container").html(data);

        // Go Back to Course Section List - Button
        $("#course_builder_go_back").click(function()
        {
            tinyMCE.execCommand('mceRemoveEditor ', false, 'target_builder');
            InitCourseContentList()
        });



        if (tinymce.editors.length < 1) {

            tinymce.init({
                mode : "none",
                width : 680,
                height : 300,
                selector : "textarea#target_builder",
                theme : "modern"
            });
        } else if (tinymce.editors.length > 0){
                tinyMCE.execCommand('mceAddEditor', true, 'target_builder');
        } else {
            alert("Cannot load editor!");
        }

    });

}

textarea建立在这一行:

$("#container").html(data);

为它带来的html看起来像这样:

<div>
    <textarea  id="target_builder" ></textarea>
</div> 

第一次加载时,它可以工作。如果我点击后退按钮去了页面上的其他位置,然后回来(整个页面网址永远不会改变:用ajax完成),textarea在那里,编辑不是。< / p>

当我在alert测试中执行tinymce.editors.length > 0时,会显示(在第二次或更多次加载时)。

我看到许多引用此问题的问题,并说您必须删除并添加execCommand的实例。我是否正确使用了这个?

2 个答案:

答案 0 :(得分:7)

我想解决的问题是你必须在再次调用之前删除tinymce 所以在执行时添加tinyMCE.remove();删除它们。 在接下来的电话会议上,Tinymce将会在那里。

答案 1 :(得分:0)

问题是我在删除编辑器实例之前没有先删除焦点。

我这样做了:

    if ( typeof tinyMCE != 'undefined') {
        tinyMCE.execCommand('mceFocus', true, 'target_builder');
        tinyMCE.execCommand('mceRemoveEditor', true, 'target_builder');
    }