script标签放在底部的好处?

虽然理论上放在哪里都是可以的,但是对于前端页面优化来讲,还是放在底部是最佳的,因为如果JS执行出现错误了,最起码页面中的元素还能加载出来,因为DOM文档是从上往下的顺序执行的。

放在底部哪里?

许多人认为只要放在底部了,无论是“body标签闭合之前”还是在“body标签闭合之后”都是一样的,其实还是有差别的,

因为从HTML 2.0起放在“body标签闭合之后”就是不合标准的。之所以但是浏览器却不会报错,是因为如果在“body标签闭合之后”后再出现script或任何元素的开始标签,都是parse error,浏览器会忽略之前的</body>,即视作仍旧在body内。所以实际效果和写在“body标签闭合之前”之前是没有区别的。

所以,只要是让浏览器做了多余的事都是不好的,虽然差别细微,但是咱们还是按照标准来,放在“body标签闭合之前”。

async和defer属性:

一般script标签会被放在头部或尾部。头部就是<head>里面,尾部一般指<body>里。

    将script放在<head>里,浏览器解析HTML,发现script标签时,会先下载完所有这些script,再往下解析其他的HTML。
讨厌的是浏览器在下载JS时,是不能多个JS并发一起下载的。不管JS是不来来自同一个host,浏览器最多只能同时下载两个JS,且浏览器下载JS时,
就block掉解析其他HTML的工作。将script放在头部,会让网页内容呈现滞后,导致用户感觉到卡。所以yahoo建议将script放在尾部,这样能加速网页加载。
将script放在尾部的缺点,是浏览器只能先解析完整个HTML页面,再下载JS。而对于一些高度依赖于JS的网页,就会显得慢了。所以将script放在尾部也不是最优解,最优解是一边解析页面,一边下载JS。
     所以有一种更modern的方式:使用async和defer。80%的现代浏览器都认识async和defer属性,这两个属性能让浏览器做到一边下载JS(还是只能同时下载两个JS),一边解析HTML。
他的优点不是增加JS的并发下载数量,而是做到下载时不block解析HTML。
  1. <script type="text/javascript" src="path/to/script1.js" async></script>
  2. <script type="text/javascript" src="path/to/script2.js" async></script>                                                                                                带async属性的script会异步执行,只要下载完就执行,这会导致script2.js可能先于script1.js执行(如果script2.js比较大,下载慢)。defer就能保证script有序执行,script1.js先执行,script2.js后执行。

script标签写在哪里好?相关推荐

  1. script标签中写html,html中script标签的详细介绍

    大家好,欢迎关注支持,谢谢!本篇将介绍html中script标签的详细用法,有兴趣的朋友可以了解一下! 一.前言 在html中,为了实现动态交互效果,我们经常会嵌入其它脚本语言(如:JavaScrip ...

  2. HTML5 script 标签的 crossorigin 和integrity属性的作用

    Bootstrap 4 依赖的基础库中出现了两个新的属性 1 <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.slim ...

  3. Script标签的async和defer

    之前有写过HTML页面渲染过程,知道了JavaScript是会阻塞DOM解析的,所以我们会把script标签放到底部防止阻塞HTML解析.其实script还有两个属性,async和defer,也是可以 ...

  4. 浅谈script标签中的async和defer

    script标签用于加载脚本与执行脚本,在前端开发中可以说是非常重要的标签了. 直接使用script脚本的话,html会按照顺序来加载并执行脚本,在脚本加载&执行的过程中,会阻塞后续的DOM渲 ...

  5. html css integrity,HTML5 script 标签的 crossorigin 和integrity属性的作用

    Bootstrap 4 依赖的基础库中出现了两个新的属性 1 2 3 HTML5 新的规定,是可以允许本地获取到跨域脚本的错误信息,但有两个条件:一是跨域脚本的服务器必须通过 Access-Contr ...

  6. javascript --- [jsonp] script标签的妙用(绕过同源限制)

    1. 同源 1.1 什么是同源 协议.域名.端口号相同 1.2 为什么有同源政策 同源政策是为了保护用户信息的安全,放置恶意的网站窃取数据.最初的同源政策是指A网站再客户端设置的Cookie,B网站是 ...

  7. 应该把script标签放在哪里

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 概述: 如果在页面中写JS的话,那必然会用到script标签,理论上script标签放在哪里都是可以 ...

  8. HTML的script标签

    在 HTML 页面中插入一段 JavaScript: 这句话可能大家一开始根本不了解JavaScript,是什么? 在我的了解中JavaScript并不是用java语言开发的,人家用的是c语言和另外一 ...

  9. Script标签与访问HTML页面

    代码 <img src="1_ender1000.jpg" id="img2" alt="" onclick="alert( ...

最新文章

  1. 为什么大家都推荐我学Linux
  2. ios 构建版本一直在处理中_iOS关于审核提交构建版本不显示问题集锦
  3. SAP PM模块实施难点与重点
  4. 在if里赋值要注意=和==的优先级,==优先于=
  5. c语言中strcmp作用,C语言中strcmp的实现原型
  6. toolstripmanager --工具栏或菜单的合并
  7. MyEclipse8.5默认工作区间修改
  8. mysql多索引结构_MySQL-索引结构详解
  9. 荣耀平板7可以用鸿蒙么,荣耀平板7定档3月23日发布,一屏可同时开启4个应用
  10. 27.crontab
  11. Python socket.send()与socket.sendall()的区别
  12. spring mybatis 项目源码
  13. Keil_V5 MDK编译时出现:关于core_cm3.c的错误
  14. 新房怎么做到全屋网络覆盖?
  15. 项目实训—场景划分(一)
  16. 三分钟理解辗转相除法
  17. AndroidStudio 弹出的Safe Delete 安全删除功能是什么
  18. 洞房花烛夜山西人必喝的和气拌汤——西红柿鸡蛋拌汤
  19. Vue模块语法下(事件处理器自定义组件组件通信)
  20. 【数据结构与算法学习笔记001】Kalman滤波

热门文章

  1. MQTT客户端测试工具(模拟器)
  2. Redhat7在线编译安装gcc7.5
  3. SQL注入漏洞,攻防必杀技!
  4. 如何获取PDF文件中对应内容的坐标及范围?
  5. 单片机工具书-周立功
  6. 空间过采样法实现思路
  7. ocx开发经验,ActiveX开发快速入门
  8. Umami自建网站统计工具-免费开源的网站访问流量统计分析平台
  9. SSL数字证书(二)使用makecert.exe签发证书
  10. 同时访问内外网+局域网配置固定ip