由于与MathJax相关的原因,我需要从Contenttools可编辑区域动态清除内容,然后将新元素附加到可编辑区域。当我将元素追加到区域时,Contenttools不会将其视为可编辑的。我在AJAX回调中使用以下jQuery代码:

$(".contentArea").empty().append($(response.data.content))


内容按我的需要显示,但不可编辑。谁能帮我?在加载新内容后,我还尝试使用editor.init(...)重新初始化编辑器,但这似乎也没有注册新内容。任何帮助是极大的赞赏!

最佳答案

好的,这听起来像是发生了什么事:当您请求内容的Tex版本替换当前的MathML时,将启动编辑器,因此,当您替换可编辑区域中的内容时,它处于活动状态,导致编辑器和页面不同步。

对于您的具体情况,我无法轻松尝试此操作,但是以下代码概述了解决您所描述问题的初步方法,如果您让我知道您的工作方式以及是否需要任何修订,我会很高兴更新它。

var editor = ContentTools.EditorApp.get();

// Add a flag to the editor that indicates when the tex version of the content
// has loaded.
editor.texLoaded = false;

// Capture the start event against the editor, the first time around we load
// the tex version of our content, the second time around we intialize the
// editor as normal.
editor.addEventListener('start', function(ev) {

    // Has the Tex content been loaded, if so do nothing we're ready to start
    // editing.
    if (this.texLoaded) {
        return;
    }

    // If the Tex content hasn't been loaded then cancel the start event
    ev.preventDefault();

    // Load the Tex content
    $.ajax({
        url: "/get-tex?..."
    }).done(function (response) {
        // From the response update the contents of the editable region
        $('.contentArea')[0].innerHTML = response.data.content;

        // Flag that the tex version of the content is now in place
        this.texLoaded = true;

        // Start the editor
        editor.start();
    });
});

关于javascript - ContentTools-通过jQuery附加数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37934496/

10-12 00:17