2016-03-15 18 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