html页面的渲染And<script>位置的影响
男篮世界杯赛程,型男大主厨吴青峰,蟹龙岗
周末加班敲代码的时用到了<script>标签,突然想到了一个问题:别的自测项目里面<script>我把他放在了不同位置,这里应该会对代码的执行与渲染后影响吧?于是今天专门进行了查询,趁机总结以下:
html 文档的解释方式&顺序:
预备知识:(需要简单理解同步/异步的区别)
同步,是所有的操作都做完,才返回给用户结果。即写完数据库之后,在相应用户,用户体验不好。
异步,不用等所有操作等做完,就相应用户请求。即先相应用户请求,然后慢慢去写数据库,用户体验较好。
- html文档的执行,从上到下解释
- 解释过程中遇到 <link>,<img> 标签就会异步进行加载/下载,然后继续向下进行代码的解释
- 遇到<script> 标签时情况相反,此时会开始同步请求js文件,然后逐句执行js文件中的代码,知道所有代码执行完再继续进行html剩余代码的解释
<script>标签引起的问题and位置的影响:
- 解决<script>同步执行导致html脚本解释的阻塞问题:
- 方法一 => 将<script>放在<body>的最后一部分
- 给<script>标签添加 defer 属性;用法:
<script type="text/javascript" defer="defer">
defer 作用:属性规定是否对脚本执行进行延迟,直到页面加载为止。(注意:局限于ie浏览器;详细请参考=>请点击这里)
当然也有缺点:就是如果多个js脚本的时候没法确定脚本的执行先后顺序
- <script>位置的影响:
预备知识:(浏览器的工作流程)
解析html文档成dom树 => 解析css生成cssdom树 => cssdom树和dom树结合形成rending tree => layout => 渲染
- 将<script>放在<head></head>之间,使其在主页和其他代码之前预先装载,可以实现例如:*.js 文件的提前调用
- 将<script>放在<body></body>之间,则页面加载后运行(注意放在<body></body>中的位置,这里推荐放在最后)
小结:
- 在head里面,所有的function函数只加载不执行,执行的话是在某件事触发之后(如果有变量的初始化,会导致报错)
- 在body里面直接加载并执行
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!!
点击进行留言回复
相关文章:
-
-
-
详解CSS3新增的背景属性
CSS3新增属性:background-clip ,background-origin , background-size,本文给大家分享CSS3新增的背景属性...
[阅读全文]
-
-
-
CSS3 旋转立方体问题详解
这篇文章主要介绍了CSS3 旋转立方体问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学...
[阅读全文]
-
Grid 宫格常用布局的实现
这篇文章主要介绍了Grid 宫格常用布局的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学...
[阅读全文]
-
-
-
CSS3实现网站商品展示效果图
这篇文章主要介绍了CSS3实现网站商品展示效果图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习...
[阅读全文]
-
网友评论