我正在开发的插件中使用wp_editor,并注意到.getContent()如果在HTML视图中(而不是可视化编辑器),则不会获取编辑器的内容。
如果编辑器在HTML视图中加载,它将返回
tinyMCE.get(inputid) is undefined
但即使我试图通过以下方式获取内容:
jQuery("#"+inputid).html() or jQuery("#"+inputid).val()
返回null。如果编辑器以可视模式加载,切换到HTML视图,进行一些更改然后使用.getContent(),它将会在进行任何更改之前返回可视化编辑器的值。
我正在用这个来拔出我有限的头发,所以请帮助我们!
答案 0 :(得分:4)
我正在努力解决同样的问题。原因是可视化选项卡中的编辑器是tinyMCE,而html选项卡中的编辑器只是一个普通的textarea。不知何故,当html选项卡处于活动状态时,不会激活tinyMCE编辑器,因此您需要查询textarea。 textarea的id传递给wp_editor()函数。您可以使用传统的jquery方法进行查询。
例如,如果tinyMCE编辑器被激活,则此代码设置一个名为content的变量,如果tinyMCE没有返回任何内容(因为选择了HTML选项卡),则设置textarea的内容:
var content;
var editor = tinyMCE.get(inputid);
if (editor) {
// Ok, the active tab is Visual
content = editor.getContent();
} else {
// The active tab is HTML, so just query the textarea
content = $('#'+inputid).val();
}
答案 1 :(得分:3)
要让它100%工作,我必须这样做:
function get_tinymce_content(id) {
var content;
var inputid = id;
var editor = tinyMCE.get(inputid);
var textArea = jQuery('textarea#' + inputid);
if (textArea.length>0 && textArea.is(':visible')) {
content = textArea.val();
} else {
content = editor.getContent();
}
return content;
}
答案 2 :(得分:1)
GetAllTeams
答案 3 :(得分:0)
您需要致电tinyMCE.triggerSave();
在jQuery("#"+inputid).html()
之前将产生实际的编辑器内容。
(顺便说一下。'html view'是什么意思?)
答案 4 :(得分:0)
您可以像这样检查活动标签:
let content;
const editor = tinyMCE.get(inputid);
if (null !== editor && false === editor.hidden) {
// Ok, the active tab is Visual
content = editor.getContent();
} else {
// The active tab is HTML, so just query the textarea
content = $('#'+inputid).val();
}