WP - JS - 获取Tinymce编辑器的实例

m.s*_*tos 3 javascript wordpress jquery tinymce

我正在创建一个Wordpress插件,它metabox在包含按钮的帖子编辑器下添加了一个权限.该插件还会在结束</body>标记的正下方加载Javascript文件.

目的

目前,我想用插件实现的目标很简单.当用户向编辑器输入内容然后单击元框内的按钮时,我想修改编辑器的内容.

JS代码

最简单的形式:

jQuery(document).ready(function($) {
   $('#button').on('click', function(e) {
      e.preventDefault();

      var editor = tinyMCE.get("content");
      editor.setContent(some_content);
   });
});
Run Code Online (Sandbox Code Playgroud)

问题

问题是editor变量回报undefined.

FIREBUG(试图设置时var editor)

wpActiveEditor:"content"
editors:[]
activeEditor:null

我做了什么

我在Tinymce的文档和Stackoverflow上找到了许多很多东西(也有许多小的调整),但问题仍然存在.

任何帮助将非常感激.

PS.运行我的测试时,内容textarea是可见的.

m.s*_*tos 11

当编辑器首次加载"文本"模式激活时,tinymce不会被初始化,因此您无法使用tinyMCE.get(),而不是"可视"模式.

(我没有注意到它实际上在"可视"模式下工作,因为我一直在"文本"模式下测试它)

因此,必须使用条件语句来确定哪个选项卡处于活动状态.我用这个方法解决了我的问题:

function setEditorContent(val) {
  var $_editorTextArea = $('#content');
  $_editorTextArea.is(':visible') ? $_editorTextArea.val(val) : tinyMCE.get('content').setContent(val);
}
Run Code Online (Sandbox Code Playgroud)

希望这个答案可以防止一些头痛:)