什么是JS延迟加载?
JS延迟加载 。也就是等页面加载完成之后再加载JavaScript文件
为什么让JS实现延迟加载?
js的延迟加载有助于提高页面的加载速度 。
Js延迟加载的方式有哪些?一般有以下几种方式:
·defer属性
·async属性
·动态创建DOM方式
·使用jQuery的getScript方法
·使用setTimeout延迟方法
·让JS最后加载
1、defer属性HTML 4.01为<script>标签定义了defer属性 。标签定义了defer属性元素中设置defer属性 。等于告诉浏览器立即下载 。但延迟执行标签定义了defer属性 。
用途:表明脚本在执行时不会影响页面的构造 。也就是说 。脚本会被延迟到整个页面都解析完毕之后再执行在<script>元素中设置defer属性 。等于告诉浏览器立即下载 。但延迟执行
<!DOCTYPE html><html><head> <script src="/images/defaultpic.gif"></script></head><body><!--这里放内容--></body></html>
说明:虽然<script>元素放在了<head>元素中 。但包含的脚本将延迟浏览器遇到</html>标签后再执行HTML5规范要求脚本按照它们出现的先后顺序执行 。在现实当中 。延迟脚本并不一定会按照顺序执行defer属性只适用于外部脚本文件 。支持HTML5的实现会忽略嵌入脚本设置的defer属性
2、async属性HTML5 为<script>标签定义了async属性 。与defer属性类似 。都用于改变处理脚本的行为 。同样 。只适用于外部脚本文件 。标签定义了async属性 。与defer属性类似 。都用于改变处理脚本的行为 。同样 。只适用于外部脚本文件 。
目的:不让页面等待脚本下载和执行 。从而异步加载页面其他内容 。异步脚本一定会在页面 load 事件前执行 。不能保证脚本会按顺序执行
<!DOCTYPE html><html> <head><script src="/images/defaultpic.gif" async></script> </head><body><!--这里放内容--></body></html>
async和defer一样 。都不会阻塞其他资源下载 。所以不会影响页面的加载 。
缺点:不能控制加载的顺序
3、动态创建DOM方式//这些代码应被放置在</ body>标签前(接近HTML文件底部)<script type="text/javascript"> function downloadJSAtOnload() {varelement = document .createElement("script");element.src = "https://www.wangchuang8.com/defer.js";document.body.appendChild(element); } if (window. addEventListener)window.addEventListener("load" ,downloadJSAtOnload, false); else if (window.attachEvent)window.attachEvent("onload", downloadJSAtOnload) ; elsewindow. onload =downloadJSAtOnload;</script>
4、使用jQuery的getScript()方法$.getScript("outer.js" , function(){ //回调函数 。成功获取文件后执行的函数 console.log(“脚本加载完成")});
5、使用setTimeout延迟方法的加载时间延迟加载js代码 。给网页加载留出更多时间<script type="text/javascript" > function A(){$.post("/1ord/1ogin" ,{name:username,pwd:password},function(){alert("Hello");}); } $(function (){setTimeout('A()', 1000); //延迟1秒 })</script>
6、让JS最后加载把js外部引入的文件放到页面底部 。来让js最后引入 。从而加快页面加载速度例如引入外部js脚本文件时 。如果放入html的head中,则页面加载前该js脚本就会被加载入页面 。而放入body中 。则会按照页面从上倒下的加载顺序来运行JavaScript的代码 。所以我们可以把js外部引入的文件放到页面底部 。来让js最后引入 。从而加快页面加载速度 。
上述方法2也会偶尔让你收到Google页面速度测试工具的“延迟加载javascript”警告 。所以这里的解决方案将是来自Google帮助页面的推荐方案 。
//这些代码应被放置在</body>标签前(接近HTML文件底部)<script type= "text/javascript"> function downloadJSAtonload() {var element = document.createElement("script");element.src = "https://www.wangchuang8.com/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>
这段代码意思等到整个文档加载完后 。再加载外部文件“defer.js” 。
【js延迟1秒的方法 JS延长加载的方式有哪些】使用此段代码的步骤:
6.1)复制上面代码
6.2)粘贴代码到HTML的标签前 (靠近HTML文件底部)
推荐阅读
- 在农村,有什么野菜可以食用且对身体有益?
- 老款手机推荐 目前这4款价格低系统很流畅
- 农村有哪些野菜对嗓子比较好?
- 15万能选到能越野的好车吗?
- 怀孕该注意哪些事项 早知道早避免
- 有哪些口味比较好的野菜?
- 对汽车一窍不通,想买一辆越野型的家用汽车,预算十五万左右,要求安全,舒适,节能,请懂行的大神推荐?
- 苹果12和苹果13对比哪个值得买 哪个更好更划算
- 冤大头的来历 冤大头出自哪里