【问题标题】:tinymce wont init in function, works in browser consoletinymce 不会在功能中初始化,在浏览器控制台中工作
【发布时间】:2021-07-30 17:08:24
【问题描述】:

我有一个将 HTML 附加到 div 的函数,然后尝试在 <textarea> 字段上初始化 tinyMCE:

function refreshNotes() {
            {#console.log("fetching notes")#}
            $.get({
                url: "/notes/{{ record_id }}",
                dataType: "json"
            }, (response) => {
                $("#noteCollapseNotes").empty()
                const notes = Object.entries(response["data"])
                {#console.log(notes)#}
                
                for (const [key, note] of notes) {
                    {#console.log(key, note)#}
                    $("#noteCollapseNotes").append(getNoteHTML(key, note))
                    
            })
            tinymce.init({
                selector: ".readonly",
                readonly: true,
                menubar: false,
                toolbar: false,
                height: 100
            });
        }

refreshNotes 在用户对笔记执行 CRUD 操作时被调用。 getNoteHTML() 产生一个 <div> 内部有一个 <textarea> 包含 .readonly

由于某种原因,refreshNotes() 末尾的 tinymce.init 调用不起作用。

但是,如果我进入控制台并粘贴相同的调用,编辑器会成功初始化。 这里有什么问题?

【问题讨论】:

    标签: javascript html tinymce jinja2


    【解决方案1】:

    您的 JavaScript 很可能存在时间问题。您有一个看起来是异步的$.get() 调用,然后您立即尝试初始化 TinyMCE。在异步调用返回之前,您不会创建 DOM 节点,但是在您开始调用以从服务器获取数据后立即初始化 TinyMCE。当您尝试从控制台调用事物时,$.get() 可能已完成,并且事情会按照您的意愿运行。

    在创建新 DOM 节点的 for 查找完成后,我会将 tinymce.init({}) 调用移动到您的成功函数中。

    【讨论】:

    • 直觉很好!!!这正是这里发生的事情。我在这里偶然发现了相同的建议修复。
    猜你喜欢
    • 2017-11-26
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2015-11-21
    • 2019-09-10
    • 1970-01-01
    相关资源
    最近更新 更多