javascript - TinyMCE bug IE 调用tinyMCE.editors

标签 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时,我正确地看到“编辑器”,但是当您调用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);返回空数组

最佳答案

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

编辑:我会尝试在 init() 本身中触发您的 getTinyMCEEditors() 调用 - 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 是异步在窗口加载上运行代码,因此不能保证 TinyMCE 已完成编辑器的初始化。将代码移动到 init 的设置并在编辑器“init”上触发它可以确保编辑器在代码运行之前就位。

关于javascript - TinyMCE bug IE 调用tinyMCE.editors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36018305/

相关文章:

jQuery IE7/IE8 : Bind method events order bug?

html - 封面图片未在 safari 和 ie 9 中设置

tinymce - 删除 TinyMCE 工具栏按钮

javascript - Wordpress 中的 tinymce 编辑器 getContent null

javascript - D3 图未使用统一数据更新

javascript - 如何在 Express.js 中使用 Less?

c# - 如何检测IE9中启用了哪些插件?

css - TinyMCE:为完整的编辑器内容设置背景颜色?

javascript - 我怎样才能避免 "optimizing away"我的 javascript 测试用例?

javascript - navigator.mediaDevices.enumerateDevices 在 iOS Safari (13.2.3) 上不返回任何音频输入设备