3

なぜこれが'cannot call method getContent of undefined'になっているのですか、これはどのように可能ですか? tinyMCE でテキストエリアをセットアップしますが、getContent を実行できません。

tinyMCE.init({
            plugins: 'paste',
            theme : "advanced",
            mode : "specific_textareas",
            editor_selector : element,
            width : width,
            theme_advanced_buttons1 : "bold,italic,underline,strikethrough,bullist,numlist,undo,redo,",
            theme_advanced_buttons2 : "",
            theme_advanced_buttons3 : "",
            theme_advanced_toolbar_location : "top",
            theme_advanced_toolbar_align : "left",
            content_css : "hhhng.css",
            paste_text_sticky : true,
            //select pasteAsPlainText on startup
            setup : function(ed) {
                    ed.onInit.add(function(ed) {
                    ed.pasteAsPlainText = true;
                });
            }
});
var x = tinyMCE.get(element).getContent();

アップデート

ボタンのクリックから呼び出すと機能しますが、tinymce が初期化された直後に機能しないのはなぜですか? はい、それはドキュメント準備完了ブロックにあります。それは私には意味がありません:S

$("#button").click( function(e) {

    e.preventDefault();
    console.log(tinyMCE.activeEditor.getContent());

});
4

2 に答える 2

6

ドキュメント準備完了ブロックにある場合でも、init が呼び出されたときに TinyMCE がすぐに作成されない可能性があります。初期化されたコードを実行したい場合は、コールバック関数を渡す方法が提供されているかどうかを確認する必要があります。準備ができたら、この関数を呼び出します。

実際、このような関数をこのコードですでに使用しているようです。

//select pasteAsPlainText on startup
setup : function(ed) {
        ed.onInit.add(function(ed) {
        ed.pasteAsPlainText = true;
    });
}

post init コードをその関数本体に追加するだけです。

于 2012-07-06T11:10:59.113 に答える
1

アルノースの回答に加えて、コンテンツをできるだけ早く入手する方法を紹介したいと思います。tinymce エディター インスタンスが作成されていますが、これには時間がかかります。alnor が要求したときに存在しないと述べているためです。

tinymce 構成 (init) パラメーターの設定を使用して onInit ハンドラーを設定すると、コンテンツを要求でき、エディターが応答します。ここにあります:

setup : function(ed) {

    ed.onInit.add(function(ed, evt) {
        var x = tinyMCE.get(element).getContent();
        console.log(x);
    });
},

...

tinymce onInit イベントは、エディターの準備が整う (使用する) とすぐに発生します。

于 2012-07-06T12:12:01.570 に答える