Jquery wp#U编辑器Tiny MCE getContent不';t返回HTML视图的内容

Jquery wp#U编辑器Tiny MCE getContent不';t返回HTML视图的内容,jquery,wordpress,tinymce,Jquery,Wordpress,Tinymce,我在开发的插件中使用wp_编辑器,并且注意到如果编辑器位于HTML视图中,.getContent()不会获取编辑器的内容(与可视化编辑器相反) 如果编辑器在HTML视图中加载,它将返回 tinyMCE.get(inputid) is undefined 但即使我尝试通过以下方式获取内容: jQuery("#"+inputid).html() or jQuery("#"+inputid).val() 它返回null。更让我吃惊的是,如果编辑器是以可视化模式加载的,请切换到HTM

我在开发的插件中使用wp_编辑器,并且注意到如果编辑器位于HTML视图中,.getContent()不会获取编辑器的内容(与可视化编辑器相反)

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

    tinyMCE.get(inputid) is undefined
但即使我尝试通过以下方式获取内容:

    jQuery("#"+inputid).html() or jQuery("#"+inputid).val()
它返回null。更让我吃惊的是,如果编辑器是以可视化模式加载的,请切换到HTML视图,进行一些更改,然后使用.getContent(),它将在进行任何更改之前返回可视化编辑器的值


我拔出我的头发与这一个供应有限,所以帮助将不胜感激

您需要调用
tinyMCE.triggerSave()
jQuery(“#”+inputid)之前。html()
将生成实际的编辑器内容


(顺便说一句,你说的“html视图”是什么意思?)

我也遇到了同样的问题。原因是VisualTab中的编辑器是tinyMCE,而html选项卡中的编辑器只是一个纯文本区域。当html选项卡处于活动状态时,tinyMCE编辑器不会被激活,因此您需要查询文本区域。textarea将id传递给wp_editor()函数。您可以使用传统的jquery方法查询它

例如,此代码使用tinyMCE编辑器的内容设置名为content的变量(如果该变量被激活),或者使用textarea的内容设置名为content的变量(如果tinyMCE未返回任何内容)(因为选中了HTML选项卡):


为了让它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;
}
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();
}

这是我正在使用的功能,从未让我失望过

它非常简单,即使TinyMCE还没有加载,也能正常工作。 它只是检查包装器的类,使用起来非常安全



您可以按如下方式检查活动选项卡:

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

抱歉,我忘了提及我也尝试过triggerSave(),结果相同。在WP编辑器中,您可以在标准(微型MCE编辑器)和html视图之间切换选项卡,这允许您在不使用WYSIWYG编辑器的情况下编辑html。嗯,sry,我不太熟悉WPE编辑器,但这是一个适合我的编辑器!谢谢分享!这是所有解决方案中效果最好的。投了赞成票。老兄,老兄,我在想同一页上的多个wp_编辑出了问题。但是我让所有的编辑器都处于HTML模式。你的回答很有帮助!提示:使用
tinymce.editors
可以在页面上获取所有活动的tinymce编辑器。