繁体   English   中英

TinyMCE bug IE调用tinyMCE.editors

[英]TinyMCE bug IE call tinyMCE.editors

我有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我可以正确看到“ editors”,但是当您调用tinyMCE.editors它将返回一个空数组。

我也尝试过tinyMCE ['editors']-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); 返回空的阵营

您实际上要让TinyMCE接管那些textares的初始化调用在哪里? 也许这只是一个时间问题? 在初始化过程完成之前, tinymce.editors不会包含任何内容。

编辑:我会尝试在init()本身触发你的getTinyMCEEditors()调用getTinyMCEEditors()让你能够做到这一点

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的设置并在编辑器'init'上触发它将确保编辑器在代码运行之前就位。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM