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

How to set callback to execute after all the tinyMCE editors have been initialized?

我已经使用 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).

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

提前致谢:)

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

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

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

资源:

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

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