动态添加javascript并判断是否加载完成

稍微有点经验的开发人员都知道,浏览器加载js文件时页面处于阻塞状态,对用户体验极不友好,因为如果把js包含在head标签内,页面必须等到所有的head文件加载完成后才开始渲染,在此之前用户看到的是一片空白,如果超过3秒种还不出来,90%以上的用户会直接选择关闭页面。因此建议尽可能的减少在head里面放过多的js文件,特别是比较大的文件,我们可以把他们放到body后面,这样页面就能快速响应,js让它稍后加载,形成一种过渡效果,提升用户体验。

当然,放在body后的js文件可以直接写,也可以后面动态添加,如果不是很重要的js文件建议采用动态添加。

动态添加一个js文件到body

var s = document.createElement('script')
s.type = "text/javascript"
s.src = "https://cdn.somesite.com/ajax/libs/some.js"
document.body.append(s)


这时有些函数的执行必须等到动态添加的js加载完成之后才能使用,这个好解决,js有个属性 onreadystatechange,顾名思义应该就是js文件加载状态的改变,通过一些状态值就可以轻松的判断这个文件有没有加载完成,并执行相应的操作。

很简单,就这几句话

s.onload = s.onreadystatechange = function(){
   if(!this.readyState||this.readyState=='loaded'||this.readyState=='complete'){  
      //do something here!
   }
   s.onload = s.onreadystatechange=null
}

完了,就这样

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值