js的阻塞特性:

所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。

直到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。

为了提高用户体验,新一代浏览器都支持并行下载JS,但是JS下载仍然会阻塞其它资源的下载(例如.图片,css文件等)。

*由于浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以就会阻塞其他的下载和呈现。

*嵌入JS会阻塞所有内容的呈现,而外部JS只会阻塞其后内容的显示,2种方式都会阻塞其后资源的下载。

也就是说外部样式不会阻塞外部脚本的加载,但会阻塞外部脚本的执行。

CSS怎么会阻塞加载了?

CSS本来是可以并行下载的,在什么情况下会出现阻塞加载了(在测试观察中,IE6下CSS都是阻塞加载)

*当CSS后面跟着嵌入的JS的时候,该CSS就会出现阻塞后面资源下载的情况;

*而当把嵌入JS放到CSS前面,就不会出现阻塞的情况了。

根本原因:

*因为浏览器会维持html中css和js的顺序,样式表必须在嵌入的JS执行前先加载、解析完。

*而嵌入的JS会阻塞后面的资源加载,所以就会出现上面CSS阻塞下载的情况。

嵌入JS应该放在什么位置?

1、放在底部,虽然放在底部照样会阻塞所有呈现,但不会阻塞资源下载。

2、如果嵌入JS放在head中,请把嵌入JS放在CSS头部。

3、使用defer(只支持IE)

4、不要在嵌入的JS中调用运行时间较长的函数,如果一定要用,可以用`setTimeout`来调用

最新文章

  1. eclipse发布web项目到生产环境的方式汇总(tomcat)
  2. Knockout.js随手记(3)
  3. python 编辑xml中namespace问题中出现很多ns0
  4. 解迷宫的C++的未完善编程代码........请大神们帮忙改善下.........
  5. hdu5412——CRB and Queries
  6. CentOS 7下关于systemd的一些唠叨话二:systemd服务脚本的编写
  7. 不用ide编译java程序时调用jar包
  8. ASP.NET 5 :上传文件(转)
  9. c++将引用作为函数的参数---6
  10. 让Eclipse使用新版本的JRE
  11. STM32随记
  12. php判断手机移动设备访问
  13. MVC中的Ajax(AjaxHelper)
  14. bootstrap你让前端小狮子们又喜又恨
  15. python闭包以及装饰器
  16. rsync unison+inotify双向实时同步
  17. 基于Dapper的分页实现,支持筛选,排序,结果集总数,非存储过程
  18. Sping4之注入参数
  19. codeforces498C
  20. 【接口时序】3、UART串口收发的原理与Verilog实现

热门文章

  1. RPS/RFS/ GRO
  2. ipmi常用的命令行命令
  3. 标准库之time,random,sys,os
  4. Mac垃圾忘记清理?开启自动清理提醒帮助你!
  5. 有什么OCR文字识别软件好用?
  6. word边框+底纹
  7. mybatis 动态SQL 源码解析
  8. Mybatis【2】-- 多个mapper文件以及namespace作用
  9. Arduion学习(一)点亮三色发光二极管
  10. MySQL数据更新