2016-03-15 36 views
1

我有TinyMCE版本3.5.8。我想調用tinyMCE對象,它是tinyMCE.editors。在Firefox和Chrome中沒有問題。在IE 11中是一個問題。TinyMCE錯誤IE調用tinyMCE.editors

if (typeof(tinyMCE) != "undefined") { 
    var n = 0; 
    for (var i = 0; i < tinyMCE.editors.length; i++) { 
    ... 
    } 
} 

Firefox和Chrome通行證週期沒有問題,但問題是在IE tinyMCE.editors.length返回0

當控制檯轉儲TinyMCE我看到「編輯」正確的,但是當你打電話tinyMCE.editors它返回一個空數組。

我也試過tinyMCE ['編輯'] - 在IE中的同樣的問題。

請幫忙。謝謝


有什麼想法嗎?

不過,我會詳細說明問題。 我更新TinyMCE的 - 版本4 使用jQuery - v1.11.3

我試圖代碼乾淨而不其他JavaScript代碼followes:

<!DOCTYPE html> 
    <html> 
    <head> 
     <title></title> 
     <script type="text/javascript" src="https://.../js/jquery.js" ></script> 
     <script type="text/javascript" src="https://.../tinymce4/tinymce.min.js" ></script> 
     <script type="text/javascript" src="https://.../tinymce4/_tinymce.advanced.js" ></script> 
    </head> 
    <body> 
    <textarea class="wysiwyg" id="a1" name="a1"> 

    </textarea> 
    <textarea class="wysiwyg" id="a2" name="a2"> 

    </textarea> 
    <script type="text/javascript">  
     jQuery(window).bind('load', function() { 
      var editors = getTinyMCEEditors(); 
     }); 
     /** 
     * Get TinyMCE Editors on page 
     * @returns Object Editors Id 
     */ 
     function getTinyMCEEditors(filterClass) { 
      var ed = {}; 
      if (typeof(tinyMCE) != "undefined") { 

    // THIS IS ERROR - return null array 
       console.log(tinyMCE.editors); 

       var n = 0; 
       for (var i = 0; i < tinyMCE.editors.length; i++) { 
        if ($('#' + tinyMCE.editors[i].id).hasClass(filterClass)) { 
         ed[n] = tinyMCE.editors[i].id; 
         n++; 
        } 
       } 
      } 
      return ed; 
     } 

    </script> 
    </body> 
    </html> 

的console.log(tinyMCE.editors); RETURN EMPTY ARRAY

回答

0

您的init調用是在哪裏實際獲取TinyMCE來接管這些textareas?也許這只是一個時間問題?在初始化過程完成之前,tinymce.editors將不包含任何內容。

編輯:我會嘗試觸發您getTinyMCEEditors()呼叫在init()本身 - TinyMCE的給你做這個

TinyMCE的4碼的能力:

tinymce.init({ 
    .... 
    setup: function (editor) { 
     editor.on('init', function() { 
      //run your code here 
     }); 
    } 
    .... 
} 

TinyMCE的3代碼:

tinyMCE.init({ 
    ... 
    setup : function(ed) { 
     ed.onInit.add(function(ed) { 
      //run your code here 
     }); 
    } 
}); 

由於JavaScript是異步運行在Window load上的代碼並不能保證TinyMCE完成初始化編輯器。將代碼移動到init的設置並在編輯器'init'上觸發它將確保在代碼運行之前編輯器已到位。

+0

tinymce.editors被稱爲像這樣: '的jQuery(窗口).bind( '負載',函數(){風險編輯= TinyMCEEditors();});' – user3061527

+0

哪裏代碼用於'TinyMCEEditors( )'功能?它不在上面的示例代碼中。我在代碼中看到的一個函數是希望使用'tinymce.editors'的函數...我在代碼中看不到的是對'tinymce.init()'的任何類型的調用,實際上需要這些調用在textarea中調用編輯器。你在哪裏以及如何初始化'a1'和'a2' textareas的TinyMCE? –

+0

你好,函數'tinymce.init()'在文件'https://.../ tinymce4/_tinymce.advanced.js'中被調用。'tinymce.init({0} {0} {0}}}選擇器:「textarea。所見即所得「 主題:‘現代’, 插件:[ ‘advlist自動連接自動保存鏈接圖像列表CHARMAP預覽小時錨分頁符’, ‘searchreplace單詞計數visualblocks visualchars碼媒體不間斷’, 」節約表的ContextMenu方向性的文字顏色粘貼文本顏色顏色拾取「 ],... });' – user3061527