web-dev-qa-db-ja.com

TinyMCE 4で、できれば$(document).ready();内でコンテンツを設定するにはどうすればよいですか。ブロック?

タイトルが示すように、私は 公式ドキュメント を調べましたが、機能していません。これが私のJavaScript(jQueryを利用)コードです:

$(document).ready(function() {
    tinymce.init({
        element_format: "html",
        schema: "html4",
        menubar: false,
        plugins: 'preview textcolor link code',
        selector: 'TEXTAREA#rtf',
        toolbar: 'preview | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | blockquote subscript superscript | code'
    });
    tinymce.activeEditor.setContent($('TEXTAREA#rtf').text());
});
  1. tinymcetinyMCE(グーグルからこれを取得)インスタンスを検査しようとしましたが、どちらもオブジェクトです大丈夫。
  2. また、tinymce.activeEditortinyMCE.activeEditorを調べようとしましたが、null

(咳)どういうわけか、私が今始めたところにすべてを復元した後、それは機能します:

$(document).ready(function() {
    tinymce.init({
        element_format: "html",
        menubar: false,
        plugins: 'preview textcolor link code',
        schema: "html4",
        selector: 'TEXTAREA#rtf',
        toolbar: 'preview | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | blockquote subscript superscript | code'
    });
});

問題が発生したのは、UAキャッシュまたはXSLT変換された結果キャッシュのいずれかが原因であると思われます。お時間をいただき、ありがとうございました!

11
高科技黑手

これは私がそれを実装した方法です:

setTimeout(tinyMCE.init({
                            selector: "textarea.edit_notes",
                            height: editor_height,
                            theme: "modern",
                            menubar: "tools table format view insert edit",
                            force_br_newlines : false,
                            force_p_newlines : false,
                            forced_root_block : '',
                            //plugins: "fullpage",
                            valid_elements : '*[*]',
                            setup: function(ed){
                                ed.on("init",
                                      function(ed) {
                                        tinyMCE.get('testeditor').setContent($('#testeditor').val());
                                        tinyMCE.execCommand('mceRepaint');

                                      }
                                );
                            }
                            }), 50);

試してみます

6
Harsain

私はコードのどこでも機能するより良い解決策を見つけました(そしてsetTimeoutトリックとは異なり、ハックではありません)

tinymce.get('tinymce-element-id').on('init',function(e) {
      e.target.setContent('my custom content');
});
5
tinymce.activeEditor.setContent('<span>some</span> html');

https://www.tinymce.com/docs/api/tinymce/tinymce.editor/#setcontent

5
Fury

このスレッドは私を正しい方向に導いたので、私は自分のソリューションをv4と共有したいと思いました

tinymce.init({
     ...,
     init_instance_callback:function(editor){
         editor.setContent(__YOUR_CONTENT__);  
     }
});
5
Eric

このコードは、ドキュメントが準備完了状態になるとすぐに実行されるため、textareaにコンテンツが含まれる前であっても、tinymceはコンテンツを設定するだけです。テキストエリアのどこでどのようにコンテンツが設定されているかという質問が1つあります。

次に、tinyMCE.init({ .... });をsetTimeOutに配置できますか。

お役に立てれば。

0
Harsain
tinymce.init({
    selector: "#txtSummary",
    width: '100%',
    height: 350,
    statusbar: false,
    menubar: false,

    setup: function (ed) {

        ed.on('init', function () {
            //Get a value from a hidden variable and set the tiny mce text to it
            var signature = $("#hidSignature").val();
            this.setContent(signature); 
        });
    },

    paste_data_images: true,

    plugins: [
        "advlist autolink lists link charmap hr anchor pagebreak image",
        "searchreplace wordcount visualblocks visualchars code",
        "media nonbreaking save table contextmenu directionality"
    ],
    toolbar: "bold italic | alignleft aligncenter alignright alignjustify | bullist numlist | image"
});
0
Denys Wessels

TinyMCEにtextarea値を手動で追加して、このようなことを一度行ったことを覚えています。

tinyMCE.init({
   ...
   setup : function(editor) {
      editor.setContent($('TEXTAREA#rtf').text());
   }
});

セットアップ関数の「editor」パラメーターはTinyMCEインスタンスであり、そこにあることが保証されています。しばらくTinyMCEを使用していませんが、このような問題がたくさんあったことを覚えています。ここで問題を見つけるのはあなただけではありません。

しかし、なぜこのようなものを使用しないのですか? http://www.tinymce.com/wiki.php/Configuration3x:editor_selector

tinyMCE.init({
        ...
        mode : "specific_textareas",
        editor_selector : "TEXTAREA#rtf" // CSS Selectors
});

TinyMCEを使用するデフォルトの方法はどれですか。テキストエリアをTinyMCEインスタンスに変換し、入力とTinyMCEの間で値の同期を維持します

0
Jordan P