JS异步加载的三种实现方式

时间:2021-05-26

js加载的缺点:加载工具方法没必要阻塞文档,过多js加载会影响页面效率,一旦网速不好,那么整个网站将等待js加载而不进行后续渲染等工作。 有些工具方法需要按需加载,用到再加载,不用不加载,。

默认正常模式下下,JS是同步加载的,即优先加载JS,只有当JS文件下载完,dom和css才开始加载,当某些时候我们需要JS异步加载,我们可以通过以下方式来设置异步加载,不同情况下选取不同方式即可

1.defer:defer

  • JS异步下载,dom结构解析完(标签 + 样式(内容不一定下载完))才异步执行
  • 仅IE能用
  • 内部JS也能用该属性
  • 异步加载js不允许使用document.write,因为document.write会清除文档流,js标签还未加载就会被清除
  • document.write()可用于初始化页面
  • 2.(h5)async:async(asynchronous) ajax(asynchronous javascript and XML)

  • JS异步加载,加载完毕后立刻异步执行
  • IE8及以下不兼容
  • 内部JS不能用该属性
  • 3.除了以上两种方法,还有一种兼容自己封装的异步加载方式,即动态添加script标签也能实现异步加载。

    function asyncLoaded(url,callBack){ var script = document.createElement('script'); script.type = 'text/javascript'; if(script.readystate){//兼容IE script.onreadystatechange = function() {//状态改变事件才触发 if(script.readyState == 'loaded' || script.readyState == 'complete'){ callBack(); script.onreadystatechange = null; } } }else{ script.onload = function(e){ callBack(); } } script.src = url; document.body.appendChild(script);}

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章