TinyMCE bug IE调用tinyMCE.editors

时间:2016-03-15 17:37:34

标签: javascript internet-explorer tinymce

我有TinyMCE版本3.5.8。我想调用tinyMCE对象和tinyMCE.editors。在Firefox和Chrome中没问题。在IE 11中是一个问题。

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

Firefox和Chrome传递周期没有问题,但问题出在IE中 tinyMCE.editors.length返回0。

当控制台转储TinyMCE时,我看到&#34;编辑&#34;正确,但是当你调用tinyMCE.editors时,它会返回一个空数组。

我也试过tinyMCE [&#39; editors&#39;] - IE中的同样问题。

请帮忙。感谢

任何想法?

不过,我会详细描述这个问题。 我更新了TinyMCE - 版本4 使用jQuery - v1.11.3

我在没有其他javascript代码的情况下干净地尝试了代码:

    <!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);返回空置阵列

1 个答案:

答案 0 :(得分: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加载代码并不能保证TinyMCE完成初始化编辑器。将代码移动到init的设置并在编辑器上触发它&#39; init&#39;将确保在代码运行之前编辑器就位。