我有3.5.8版的TinyMCE。我想叫tinyMCE对象,它叫tinyMCE.editors。在Firefox和Chrome中没有问题。在IE 11中是一个问题。
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代码的情况下干净利落地尝试了这些代码:
<!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);返回空数组
发布于 2016-03-21 15:27:08
您的init调用在哪里真正让TinyMCE接管这些文本区域?也许这只是一个时间问题?在初始化过程完成之前,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是异步的,所以在窗口加载下运行代码并不能保证TinyMCE已经完成初始化编辑器。将代码移动到init的安装程序并在编辑器'init‘上触发它,将确保在代码运行之前编辑器已经就位。
https://stackoverflow.com/questions/36018305
复制相似问题