详解关于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 相关文章推荐
jQuery图片滚动图片的效果(另类实现)
Jun 02 Javascript
jQuery编程中的一些核心方法简介
Aug 14 Javascript
Javascript中prototype的使用详解
Jun 18 Javascript
JS实现iframe自适应高度的方法示例
Jan 07 Javascript
js实现文字跑马灯效果
Feb 23 Javascript
在小程序开发中使用npm的方法
Oct 17 Javascript
Vue插槽原理与用法详解
Mar 05 Javascript
Vuex 模块化使用详解
Jul 31 Javascript
JavaScript键盘事件响应顺序详解
Sep 30 Javascript
Vue数字输入框组件示例代码详解
Jan 15 Javascript
JavaScript如何判断对象有某属性
Jul 03 Javascript
vue封装数字翻牌器
Apr 20 Vue.js
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
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
JavaScript中split() 使用方法汇总
2015/04/17 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
Python中turtle库的使用实例
2019/09/09 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
Python识别处理照片中的条形码
2020/11/16 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
HTML5的新特性(1)
2016/03/03 HTML / CSS
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
九年级物理教学反思
2014/01/29 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
幼儿园招生广告
2014/03/19 职场文书
借款协议书范本
2014/04/22 职场文书
疾病捐款倡议书
2014/05/13 职场文书
岗位职责说明书模板
2014/07/30 职场文书
市场营销工作计划书
2014/09/15 职场文书