初始化所有 tinyMCE 编辑器后如何设置回调执行?

Posted

技术标签:

【中文标题】初始化所有 tinyMCE 编辑器后如何设置回调执行?【英文标题】:How to set callback to execute after all the tinyMCE editors have been initialized? 【发布时间】:2020-09-05 16:52:11 【问题描述】:

我已经使用 Wordpress 的wp_editor 功能加载了一个 tinyMCE 编辑器。

现在,我想在该编辑器初始化后设置它的值。我试着这样做:

$(function() 
    tinymce.get(...).setContent(...);
);

但由于编辑器尚未初始化,它会抛出错误消息Cannot read property 'setContent' of undefined。为了确认这一点,我使用console.log( tinymce.editors.length ) 语句进行控制台登录并打印0,但后来当我在加载完成后使用浏览器控制台检查变量tinymce.editors 时,编辑器就在那里,我可以对其进行操作。

所以,我的结论是等待所有的 tinyMCE 编辑器被初始化,然后运行上面的代码来改变编辑器的值。请注意,我需要使用 JS 设置值,而不是从后端 (php)。

请告诉我是否有办法做到这一点。如果您需要更多信息或者我不清楚,请问我。

提前致谢:)

【问题讨论】:

这能回答你的问题吗? Wait for TinyMCE to load 【参考方案1】:

您可以等待添加特定的编辑器管理器,然后绑定init 事件处理程序来设置编辑器的内容,如下所示:

tinymce.on( 'addeditor', e => 
    if ( e.editor.id === <your_editor_id> ) 
        e.editor.on( 'init', event => 
            event.target.setContent( <your_editor_content> );
        );
    
, true );

【讨论】:

【参考方案2】:

您可以在 TinyMCE 初始化后使用编辑器配置中的 setup 选项填充它。例如:

setup: function (editor) 
  editor.on('init', function (e) 
    editor.setContent('<p>Hello world!</p>');
  );

尝试在调用 wp_editor() 时传入这些编辑器设置。

资源:

How to get content and set content in TinyMCE

【讨论】:

我没有使用tinymce.init 方法来初始化编辑器。如果我有,我不会有这个问题。我正在使用 wordpress 的wp_editor 功能。 是的,但我认为有一种方法可以在调用 wp_editor() 时将这些设置传递给编辑器。例如,请参阅wordpress.stackexchange.com/questions/48356/…

以上是关于初始化所有 tinyMCE 编辑器后如何设置回调执行?的主要内容,如果未能解决你的问题,请参考以下文章

TinyMCE初始化后用javascript设置textarea值

如何自动调整tinyMCE的大小?

tinymce 5更新后,如何使用tinymce-vue

TinyMCE 的removeformat插件会给数字和字母会自动添加<span lang="EN-US"></span>,如何设置不会添加?

TinyMCE 一款非常不错的富文本编辑器

以编程方式将数据加载到 TinyMCE