4

開発中のプラグインで wp_editor を使用していますが、(ビジュアル エディターではなく) HTML ビューの場合、.getContent() がエディターのコンテンツを取得しないことに気付きました。

エディターが HTML ビューで読み込まれている場合は、

    tinyMCE.get(inputid) is undefined

しかし、次の方法でコンテンツを取得しようとしても:

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

null を返します。エディターがビジュアル モードで読み込まれ、HTML ビューに切り替え、いくつかの変更を加えてから .getContent() を使用すると、変更が行われる前のビジュアル エディターの値が返されます。

私はこれで限られた髪の供給を引き出しているので、助けていただければ幸いです!

4

5 に答える 5

5

私は同じ問題に苦しんでいました。その理由は、ビジュアル タブのエディターが tinyMCE であり、html タブのエディターが単なるテキスト エリアであるためです。何らかの理由で、html タブがアクティブなときに tinyMCE エディターがアクティブにならないため、代わりにテキストエリアを照会する必要があります。textarea には wp_editor() 関数に渡された ID があります。従来の jquery メソッドを使用してクエリを実行できます。

たとえば、次のコードは、tinyMCE エディターがアクティブ化されている場合はそのコンテンツを、tinyMCE が何も返さなかった場合 (HTML タブが選択されているため)、textarea のコンテンツを含む content という名前の変数を設定します。

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();
}
于 2013-05-14T14:37:22.840 に答える
2

実際のエディター コンテンツを生成するtinyMCE.triggerSave(); 前に呼び出す必要があります。jQuery("#"+inputid).html()

(ところで、「html ビュー」とはどういう意味ですか?)

于 2012-12-10T09:55:20.203 に答える
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();
}
于 2021-02-19T18:15:34.893 に答える