wp_editor Tiny MCE getContent不返回HTML视图的内容

时间:2012-12-10 08:49:38

标签: jquery wordpress tinymce

我正在开发的插件中使用wp_editor,并注意到.getContent()如果在HTML视图中(而不是可视化编辑器),则不会获取编辑器的内容。

如果编辑器在HTML视图中加载,它将返回

    tinyMCE.get(inputid) is undefined

但即使我试图通过以下方式获取内容:

    jQuery("#"+inputid).html() or jQuery("#"+inputid).val()

返回null。如果编辑器以可视模式加载,切换到HTML视图,进行一些更改然后使用.getContent(),它将会在进行任何更改之前返回可视化编辑器的值。

我正在用这个来拔出我有限的头发,所以请帮助我们!

5 个答案:

答案 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();
}