js延迟加载的方式有哪些?
2024-09-06 04:04:17
共有:defer和async、动态创建DOM方式(用得最多)、按需异步载入js
defer属性:(页面load后执行)
HTML 4.01 为 <script>
标签定义了 defer
属性。
用途:表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕之后再执行。
在<script>
元素中设置 defer
属性,等于告诉浏览器立即下载,但延迟执行。
<head>
<script src="test1.js" defer="defer"></script>
<script src="test2.js" defer="defer"></script>
</head>
async属性:(页面load前执行)
HTML5 为 <script>
标签定义了 async
属性。与defer
属性类似,都用于改变处理脚本的行为。同样,只适用于外部脚本文件。
目的:不让页面等待脚本下载和执行,从而异步加载页面其他内容。异步脚本一定会在页面 load 事件前执行。不能保证脚本会按顺序执行。
<head>
<script src="test1.js" async></script>
<script src="test2.js" async></script>
</head>
<body>
动态创建Dom:
//这些代码应被放置在</body>标签前(接近HTML文件底部)
<script type="text/javascript">
function downloadJSAtOnload() {
varelement = document.createElement("script");
element.src = "defer.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load",downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload",downloadJSAtOnload);
else
window.onload =downloadJSAtOnload;
</script>
最新文章
- protocol buffers的使用示例[z]
- HTML常用命名和CSS reset代码【收集总结】
- oracle表空间相关
- [daily][network] NAT原理(转)
- ZJOI 仓库建设 (斜率DP)
- Awesome Algorithms
- EXTJS4.2 控件之Grid getRowClass 添加行背景色
- javascript控制子页面对父页面控件操作
- 2011年-CUshell编程大赛
- 适用于SQl数据的Sql语句
- .NET 通过 Autofac 和 DynamicProxy 实现AOP
- 在servlet中跳转问题
- TCP可靠数据传输
- es修改指定的field(partial update)
- Kali linux 2018安装后全屏乱码解决
- 根据tomcat的日志判断web的发布路径以及服务路径
- 各大主流.Net的IOC框架性能测试比较(转)
- window.location.href详解
- 为web文件夹添加IIS应用程序池用户权限
- 让子类使用父类的Logger
热门文章
- (初学)wpf仿QQ界面-整体布局
- [转]Linq语法二
- 第三方缓存软件memcached和redis异同
- JDBC之Java连接mysql实现增删改查
- 【起航计划 012】2015 起航计划 Android APIDemo的魔鬼步伐 11 App->;Activity->;Save &; Restore State onSaveInstanceState onRestoreInstanceState
- mvc中尽量避免使用HttpContext.Current.Request
- 【工作中学习】CreateProcessAsUser失败,错误码:1314
- spring mvc踩坑记
- hibernate 模拟实现和What is and Why O/R Mapping
- Struts2_Struts标签