详解关于html,css,js三者的加载顺序问题


Posted in Javascript onApril 10, 2019
<head lang="en">
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="css/*.css" rel="external nofollow" >
  <script src="js/*.js></script>
</head>

DOM文档的加载顺序是由上而下的顺序加载;

1、DOM加载到link标签

css文件的加载是与DOM的加载并行的,也就是说,css在加载时Dom还在继续加载构建,而过程中遇到的css样式或者img,则会向服务器发送一个请求,待资源返回后,将其添加到dom中的相对应位置中;

2、DOM加载到script标签

由于js文件不会与DOM并行加载,因此需要等待js整个文件加载完之后才能继续DOM的加载,倘若js脚本文件过大,则可能导致浏览器页面显示滞后,出现“假死”状态,这种效应称之为“阻塞效应”;会导致出现非常不好的用户体验;

而这个特性也是为什么在js文件中开头需要$(document).ready(function(){})或者(function(){})或者window.onload,即是让DOM文档加载完成之后才执行js文件,这样才不会出现查找不到DOM节点等问题;

js阻塞其他资源的加载的原因是:浏览器为了防止js修改DOM树,需要重新构建DOM树的情况出现;

3、解决方法

前提,js是外部脚本;

在script标签中添加 defer=“ture”,则会让js与DOM并行加载,待页面加载完成后再执行js文件,这样则不存在阻塞;

在scirpt标签中添加 async=“ture”,这个属性告诉浏览器该js文件是异步加载执行的,也就是不依赖于其他js和css,也就是说无法保证js文件的加载顺序,但是同样有与DOM并行加载的效果;

同时使用defer和async属性时,defer属性会失效;

可以将scirpt标签放在body标签之后,这样就不会出现加载的冲突了。

以上所述是小编给大家介绍的关于html,css,js三者的加载顺序问题详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
extjs form textfield的隐藏方法
Dec 29 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
Oct 26 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
May 08 Javascript
JQUERY dialog的用法详细解析
Dec 19 Javascript
JavaScript中for循环的使用详解
Jun 03 Javascript
基于jquery实现瀑布流布局
Jun 28 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
基于JavaScript实现拖动滑块效果
Feb 16 Javascript
JS 60秒后重新发送验证码的实例讲解
Jul 26 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
Aug 16 Javascript
详解vue-meta如何让你更优雅的管理头部标签
Jan 18 Javascript
详解JavaScript栈内存与堆内存
Apr 04 Javascript
angular2 NgModel模块的具体使用方法
Apr 10 #Javascript
bootstrap tooltips在 angularJS中的使用方法
Apr 10 #Javascript
javascript判断一个变量是数组还是对象
Apr 10 #Javascript
Angular CLI 使用教程指南参考小结
Apr 10 #Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
Apr 10 #Javascript
element-ui多文件上传的实现示例
Apr 10 #Javascript
基于mpvue搭建微信小程序项目框架的教程详解
Apr 10 #Javascript
You might like
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
PHP has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
python实现文本去重且不打乱原本顺序
2016/01/26 Python
python多进程实现进程间通信实例
2017/11/24 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
校运会广播稿100字
2014/01/27 职场文书
暑期培训心得体会
2014/09/02 职场文书
普通党员个人整改措施
2014/10/27 职场文书
文明单位申报材料
2014/12/23 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
财务部岗位职责
2015/02/03 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
政审证明范文
2015/06/19 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python