关于百度富文本编辑器UEdit的初始化内容失败问题
百度富文本编辑器毫无疑问是强大的,但也会出问题。这个问题是在脚本中普遍存在的,由异步性导致的加载顺序问题。
我们使用
var ue = UE.getEditor('editor', {});
创建实例。
并使用
ue.setContent("Helllo World!");
初始化内容。
但是有时候初始化失败。
原因是初始化的时候富文本编辑器还没有加载完成。
这个原因对于经验丰富的攻城狮不难想到,因为js的异步问题不是只在这产生,很多时候都有这种异步导致的加载顺序问题。
对此头疼了一整天之后终于找到解决方法,UEdit有个自己的方法,可以在加载完成后执行。
ue.ready(function() { ue.setContent(a); //赋值给UEditor });
和document.ready很像,却很难找,有时候就是这样,想找一个功能的时候,很难去具体寻找。所以经验很重要。
当然我们还可以使用取巧的办法,比如使用setTimeout延时处理,以跳过加载期。只是window.onload是不行了。
原因还要追寻到此类插件的实现方式上,此类插件的具体实现并不是给定一个完整的dom结构然后进行动作,而是自行使用js创建整个dom结构,那么像富文本编辑器这样的就非常耗费性能。加载时间必然不短不说,window.onload是在dom加载完成执行,js的dom插入却不在此列。
其实我想叫洛羽的,谁抢了我的昵称!!