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

Kyl*_*leC 4 wordpress jquery tinymce

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

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

    tinyMCE.get(inputid) is undefined
Run Code Online (Sandbox Code Playgroud)

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

    jQuery("#"+inputid).html() or jQuery("#"+inputid).val()
Run Code Online (Sandbox Code Playgroud)

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

我正在用这个拔出我有限的头发供应,因此将不胜感激!

Nic*_*las 5

我正在努力解决同样的问题。原因是visual选项卡中的编辑器是tinyMCE,html选项卡中的编辑器只是一个纯文本区域。不知何故,当 html 选项卡处于活动状态时,tinyMCE 编辑器未激活,因此您需要改为查询 textarea。textarea 将 id 传递给 wp_editor() 函数。您可以使用传统的 jquery 方法查询它。

例如,此代码设置一个名为 content 的变量,如果它被激活,则使用 tinyMCE 编辑器的内容,或者如果 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();
}
Run Code Online (Sandbox Code Playgroud)


Pab*_*eco 5

为了使其 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;
}
Run Code Online (Sandbox Code Playgroud)