4

tinyMCEに問題があります。に入れ<script type="text/javascript" src="/scripts/tiny_mce/tiny_mce.js"><head>、の前にinitコードを置くと、正常<textarea class="tinyMceEditor">に動作します。initコードは次のようになります。

                    tinyMCE.init({
                        mode : "specific_textareas",
                        editor_selector : "tinyMceEditor",
                        plugins : "inlinepopups,advlink",
                        convert_urls : false,
                        theme : "advanced",
                        theme_advanced_buttons1 : "link,unlink",
                        width: "602",
                        height: "175",
                        theme_advanced_statusbar_location : "none"}); 

しかし今、私はtiny_mce.jsのロードを延期したいのですが、ユーザーが最初にボタンをクリックすると、tiny_mce.jsがロードされ、にを追加し<textarea class="tinyMceEditor"><body>、前のコードでinit作業を行いますが、これは時間、それはtinyMCEエディタを初期化せず、それは表示するだけです<textarea class="tinyMceEditor">

グーグル、しかしこれに関連するものは何も見つかりません、誰かがこの問題に遭遇しましたか?

任意の提案をいただければ幸いです。

Chrome Web開発ツールを調べたところ、tinymce.jsを動的にロードすると、en.js、editor_template.js、editor_plugin.jsなどの必要な他のjsがロードされないことがわかりました。これらのjsファイルを動的にロードするように追加しても、tinymceを初期化することはできません。


<textareaあなたの助けに感謝します、私はfirebugで見ました、そして私は追加する前にtinymce.jsをロードします<body>、そして私は追加し<textarea>、そしてtinymceをしますinit()、私はjsファイルを動的にロードするためにLazyLoad(jQueryプラグイン)を使用しています。

これが私がしたことです

if(typeof TinyMCE == "undefined"){
    //dynamically load the tinymce.js
    LazyLoad(['tinymce.js'],function(){
        //callback function, called after tinymce is loaded
        $('body').append('<textarea class="TinyMceEditor"/>');
        tinyMCE.init({init settings});
    });
}

tinymce.jsを動的にロードしない場合は、<script>タグを<head>挿入するだけでtinyMCEを初期化できますが、tinymce.jsを動的にロードすると機能しません。これで何か考えはありますか?

4

2 に答える 2

27

一日の仕事の後、最終的に解決策を見つけました、ただ置く

 window.tinymce.dom.Event.domLoaded = true;

 tinymce.init();

そうすれば、tinymceを正しく初期化できます。

于 2012-11-13T13:25:42.707 に答える
1

別のコーヒースクリプトファイルを作成することで、この問題を解決しました。次に、ビューでアクセスするウィンドウスコープを使用して以下の関数を宣言しました。

window.initialize_tiny_mce = () ->
  if (typeof tinymce != 'undefined' && tinymce != null)
    tinymce.remove();

  tinymce.init
    height: '180'
    menubar: false
    statusbar: false
    cleanup: true
    selector: '.new-tinymce-printable-html'
    plugins: [ 'autolink link image code lists advlist' ]
    toolbar: 'styleselect | bold underline italic | bullist numlist outdent indent | link image | code'
    browser_spellcheck: true
    setup: (editor) ->
      editor.on 'keyup', ->
        tinymce.triggerSave()
      editor.on 'change', ->
        console.log editor.getContent()
        return
      return

次に、部分的に表示して、この関数を呼び出しました。

:coffeescript
  initialize_tiny_mce()

これで、動的に作成された要素にTinymceエディターが割り当てられます。

于 2019-06-19T07:48:52.163 に答える