UEditor 第一次正常,第二次渲染失败(无法正常加载)问题
Posted Jack小强
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UEditor 第一次正常,第二次渲染失败(无法正常加载)问题相关的知识,希望对你有一定的参考价值。
提出问题
使用UEditor-1.4.3中遇到第一次跳转到使用UEditor的界面后,编辑器加载正常,返回后第二次再跳转到这个界面就出现UEditor无法正常加载,
看UEditor源码,发现这样一段:
/**
* @file
* @name UE
* @short UE
* @desc UEditor的顶部命名空间
*/
/**
* @name getEditor
* @since 1.2.4+
* @grammar UE.getEditor(id,[opt]) => Editor实例
* @desc 提供一个全局的方法得到编辑器实例
*
* * ''id'' 放置编辑器的容器id, 如果容器下的编辑器已经存在,就直接返回
* * ''opt'' 编辑器的可选参数
* @example
* UE.getEditor('containerId',onready:function()//创建一个编辑器实例
* this.setContent('hello')
* );
* UE.getEditor('containerId'); //返回刚创建的实例
*
*/
UE.getEditor = function (id, opt)
var editor = instances[id];
if (!editor)
editor = instances[id] = new UE.ui.Editor(opt);
editor.render(id);
return editor;
;
UE.delEditor = function (id)
var editor;
if (editor = instances[id])
editor.key && editor.destroy();
delete instances[id]
;
这段可以看到,在调用UE.getEditor(‘_editor’)初始化UEditor时,先从放置编辑器的容器instances中获取,没有实例才实例化一个Editor,这就是引起问题的原因。
在第一次跳转到编辑器界面时,正常的实例化了一个新的编辑器对象,并放入instances,调用editor.render(id)渲染编辑器的DOM;
第二次初始化时却仅从容器中取到实例:var editor = instances[id]; 直接返回了editor对象,而编辑器的DOM并没有渲染。
解决问题
例如html页面编辑器容器:
<script id="_editor" type="text/plain" name="desc" style="width:1000px;height:400px;"></script>
<!--注:html中编辑器容器id为_editor-->
在js中用下面的方式调用:
jQuery(function($)
UE.getEditor('_editor').render('_editor')
)
也可以这样:
jQuery(function($)
UE.delEditor('_editor');
var ue = UE.getEditor('_editor');
)
问题成功解决。
以上是关于UEditor 第一次正常,第二次渲染失败(无法正常加载)问题的主要内容,如果未能解决你的问题,请参考以下文章
小程序echarts数据不改变,或者是一次渲染成功,第二次进入,渲染失败的解决办法