关于百度富文本编辑器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插入却不在此列。

posted @ 2017-05-06 10:25  云遮夏靥  阅读(1369)  评论(0编辑  收藏  举报