破解因为异步实行而致使的JS插件未加载就运用的题目

相干组件版本: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(即已实例化),若否,则定时从新举行推断,直到实例化胜利后,举行赋初值的操纵。

    原文作者:array_huang
    原文地址: https://segmentfault.com/a/1190000004084539
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞