JS异步加载的三种实现方式
发布时间 - 2026-01-11 00:12:40 点击率:次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){/*url为js的链接,callBack为url的js中的函数(该函数调用应该写到匿名函数中,如function(){console.log(div.getScrollOffset())})*/
var script = document.createElement('script');
script.type = 'text/javascript';
/*if else 这几句话必须要写到这位置处,不能放最后,因为if中js加载中script.readyState存在好几种状态,
只有状态改变‘readystatechange'事件才会触发,但现在浏览器加载速度很快,当解析到该事件时JS有可能已经加载完,
所以事件根本不会触发,所以要写到前面*/
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);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js实现异步加载
# js异步加载
# js异步加载的方式
# JavaScript文件的同步和异步加载的实现代码
# 详解JS异步加载的三种方式
# 浅析JS异步加载进度条
# JavaScript 脚本异步加载的几种实现方法
# 加载
# 写到
# 下载完
# 就会
# 文档
# 有可能
# 才会
# 两种
# 也能
# 我们可以
# 而不
# 还未
# 不能用
# 没必要
# 再加
# 几句话
# 大家多多
# 要写
# 到该
# 按需
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
北京的网站制作公司有哪些,哪个视频网站最好?
详解CentOS6.5 安装 MySQL5.1.71的方法
Laravel如何与Inertia.js和Vue/React构建现代单页应用
如何在IIS中新建站点并解决端口绑定冲突?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
公司门户网站制作流程,华为官网怎么做?
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
原生JS获取元素集合的子元素宽度实例
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Laravel如何处理CORS跨域请求?(配置示例)
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
如何用搬瓦工VPS快速搭建个人网站?
JavaScript如何实现音频处理_Web Audio API如何工作?
如何用景安虚拟主机手机版绑定域名建站?
nodejs redis 发布订阅机制封装实现方法及实例代码
专业商城网站制作公司有哪些,pi商城官网是哪个?
Laravel如何配置和使用缓存?(Redis代码示例)
Laravel如何使用Telescope进行调试?(安装和使用教程)
动图在线制作网站有哪些,滑动动图图集怎么做?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
JavaScript如何实现类型判断_typeof和instanceof有什么区别
如何在阿里云完成域名注册与建站?
EditPlus中的正则表达式 实战(1)
公司网站制作需要多少钱,找人做公司网站需要多少钱?
javascript中的try catch异常捕获机制用法分析
高防服务器租用如何选择配置与防御等级?
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
如何在阿里云虚拟主机上快速搭建个人网站?
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
深圳网站制作平台,深圳市做网站好的公司有哪些?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
高端云建站费用究竟需要多少预算?
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
Internet Explorer官网直接进入 IE浏览器在线体验版网址
网站制作报价单模板图片,小松挖机官方网站报价?
如何在IIS服务器上快速部署高效网站?
太平洋网站制作公司,网络用语太平洋是什么意思?
,怎么在广州志愿者网站注册?
Android仿QQ列表左滑删除操作
javascript中对象的定义、使用以及对象和原型链操作小结
浅述节点的创建及常见功能的实现
实现点击下箭头变上箭头来回切换的两种方法【推荐】
如何在局域网内绑定自建网站域名?
装修招标网站设计制作流程,装修招标流程?
Python面向对象测试方法_mock解析【教程】
制作电商网页,电商供应链怎么做?

