首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TinyMCE bug IE调用tinyMCE.editors

TinyMCE bug IE调用tinyMCE.editors
EN

Stack Overflow用户
提问于 2016-03-15 17:37:33
回答 1查看 683关注 0票数 1

我有3.5.8版的TinyMCE。我想叫tinyMCE对象,它叫tinyMCE.editors。在Firefox和Chrome中没有问题。在IE 11中是一个问题。

代码语言:javascript
复制
if (typeof(tinyMCE) != "undefined") {
  var n = 0;
  for (var i = 0; i < tinyMCE.editors.length; i++) {
    ...
  }
}

火狐和Chrome没有问题,但问题是IE tinyMCE.editors.length返回0。

当控制台转储TinyMCE时,我正确地看到“编辑器”,但是当调用tinyMCE.editors时,它返回一个空数组。

我也尝试了tinyMCE‘编辑’-在IE中同样的问题。

请帮帮忙。谢谢

有什么想法吗?

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

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

代码语言: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);返回空数组

EN

回答 1

Stack Overflow用户

发布于 2016-03-21 15:27:08

您的init调用在哪里真正让TinyMCE接管这些文本区域?也许这只是一个时间问题?在初始化过程完成之前,tinymce.editors不会包含任何内容。

编辑:我会尝试在getTinyMCEEditors()本身中触发您的init()调用-- TinyMCE使您能够这样做。

TinyMCE 4代码:

代码语言:javascript
复制
tinymce.init({
    ....
    setup: function (editor) {
        editor.on('init', function () {
          //run your code here
        });
    }
    ....
}

TinyMCE 3代码:

代码语言:javascript
复制
tinyMCE.init({
    ...
    setup : function(ed) {
        ed.onInit.add(function(ed) {
            //run your code here
        });
    }
});

由于JavaScript是异步的,所以在窗口加载下运行代码并不能保证TinyMCE已经完成初始化编辑器。将代码移动到init的安装程序并在编辑器'init‘上触发它,将确保在代码运行之前编辑器已经就位。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36018305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档