tinyMCE 和 'mceAddEditor' 的问题

Issues with tinyMCE and 'mceAddEditor'

本文关键字:问题 mceAddEditor tinyMCE      更新时间:2023-09-26

所以我有一个使用 JavaScript 动态添加<textarea>的页面。我需要这些文本区域来使用tinyMCE。我正在使用 tinyMCE v4。

我有一个用于 tinyMCE 的初始化函数

function TinyMceEditConfig() {
        tinymce.init({
      selector: '.editor'
    });
}

然后我调用函数

TinyMceEditConfig();

然后我创建动态文本区域。基本上,有人从下拉列表中选择要输入文本。一旦他们选择它,就会生成文本区域。当用户单击下拉列表时,它会调用包含此代码的函数(我的括号可能在这里搞砸了......不要注意那个,哈哈,它们在我的代码中很好,看看肉)

return $('<div>', {
        'css': {'display': 'none'},
        'html': [
            $('<textarea>', {
                'value': this.text_value,
                'placeholder': this.placeholder_text,
                'class': "editor"] });
};

因此,此时,我可以单击下拉列表以生成文本区域(纯文本)。 如果我刷新页面,tinyMCE 就会启动,一切都很好。 在线环顾四周,以下代码应该可以解决我的问题,以便tinyMCE将在添加字段后立即显示。 这是我调用最后一个代码片段后立即在我的代码中。

tinymce.EditorManager.execCommand('mceAddEditor', false, ".editor");

但是,它没有.....有什么建议吗?

在文本区域存在之前,无法在文本区域上调用init()。 如果我理解您上面的评论,您首先调用TinyMCE init()函数,然后向页面添加文本区域元素。 这不起作用,因为init()只会处理页面上已经存在的内容。

当您将新的文本区域动态添加到页面时,您需要在文本区域成为 DOM 的一部分后调用tinymce.init(),以便让 TinyMCE 代替文本区域出现。

创建一个TinyMCE小提琴(或CodePen等)来显示你实际在做什么可能会有所帮助,因为这可能有助于人们看到事情失败的地方。