资讯专栏INFORMATION COLUMN

破解由于异步执行而导致的JS插件未加载就使用的问题

graf / 1368人阅读

摘要:相关组件版本这个问题通常会在以下情景出现页面一加载完就要利用动态操纵页面的元素为各类插件赋初值等。

相关组件版本:avalon 1.3.6

这个问题通常会在以下情景出现:

页面一加载完就要利用JS动态操纵页面的DOM元素、为各类插件赋初值等。

以ueditor为例,以往,配合后端渲染模板,直接就把初始的值输出到页面,ueditor自然就获取到初始值了;但改为前后端完全分离后,初始值需要依赖ajax读取api获得,然后再调用ueditor的setContent()方法进行赋值,而ueditor的实例化和初始值的获取这两个操作是异步执行的(当然也可以写成同步执行,利用ueditor的ready()方法即可,但总体来说不太灵活),这样就造成了一个不稳定的因素:到底在赋初值的时候,ueditor实例化好了没有呢?

为此,我思索后,得出如下方案:

var ue = UE.getEditor("content_editor");

function article_create_getFirstData() {
  if(typeof(ue) == "object") {
    initUeditor();
  } else {
    setTimeout("article_create_getFirstData()", 500);
  }
}
article_create_getFirstData();

其总体思路是,利用typeof判断预设变量是否已为object(即已实例化),若否,则定时重新进行判断,直到实例化成功后,进行赋初值的操作。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91570.html

相关文章

  • webpack原理

    摘要:原理查看所有文档页面前端开发文档,获取更多信息。初始化阶段事件名解释初始化参数从配置文件和语句中读取与合并参数,得出最终的参数。以上处理的相关配置如下编写编写的职责由上面的例子可以看出一个的职责是单一的,只需要完成一种转换。 webpack原理 查看所有文档页面:前端开发文档,获取更多信息。原文链接:webpack原理,原文广告模态框遮挡,阅读体验不好,所以整理成本文,方便查找。 工作...

    trigkit4 评论0 收藏0
  • 浏览器渲染机制

    摘要:浏览器渲染进程浏览器内核进程,内部是多线程的默认每个页面一个进程,互不影响。事件触发线程归属于浏览器而不是引擎,用来控制事件循环可以理解成引擎自己都忙不过来,需要浏览器另开线程协助。 线程和进程 进程和线程的概念可以这样理解: 进程是一个工厂,工厂有它的独立资源--工厂之间相互独立--线程是工厂中的工人,多个工人协作完成任务--工厂内有一个或多个工人--工人之间共享空间 工厂有多个工人...

    appetizerio 评论0 收藏0
  • 浏览器渲染机制

    摘要:浏览器渲染进程浏览器内核进程,内部是多线程的默认每个页面一个进程,互不影响。事件触发线程归属于浏览器而不是引擎,用来控制事件循环可以理解成引擎自己都忙不过来,需要浏览器另开线程协助。 线程和进程 进程和线程的概念可以这样理解: 进程是一个工厂,工厂有它的独立资源--工厂之间相互独立--线程是工厂中的工人,多个工人协作完成任务--工厂内有一个或多个工人--工人之间共享空间 工厂有多个工人...

    lncwwn 评论0 收藏0
  • webpack 基础与项目优化实践总结

    摘要:前言本文基于,主要涉及基本概念基本配置和实际项目打包优化。关于概念方面参考官网,常用配置来自于网络资源,在文末有相关参考链接,实践部分基于自己的项目进行优化配置。同一文件中,修改某个影响其他。 前言:本文基于weboack4.x,主要涉及webpack4 基本概念、基本配置和实际项目打包优化。关于概念方面参考官网,常用配置来自于网络资源,在文末有相关参考链接,实践部分基于自己的项目进行...

    Scorpion 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<