2.1<script>元素
1. <script>元素有下列7个属性,皆为可选:
async:表示应该立即开始下载脚本,不阻塞其他页面动作。异步加载,不保证按照页面中出现的次序执行。只对外部脚本文件有效。
defer:把脚本推迟到文档渲染完毕后再执行。按照列出的次序执行。只对外部文件有效。
charset:使用src属性指定的代码字符集。很少使用。
crossorigin:配置相关请求的CORS(跨域资源共享)设置。值为"use-credentials"设置凭据标志,意味着出战请求会包含凭据。
integrity:允许比对接收到的资源和指定的加密签名以验证子资源完整性。不匹配则页面报错,脚本不会执行。
src:包含要执行的代码的外部文件。
type:表示代码块中脚本语言的内容类型(也称MIME类型)。惯例为"text/javascript"。
2. 使用<script>方式:在网页中嵌入JavaScript代码、在网页中包含外部JavaScript文件。
3. 使用行内JavaScript代码时,要注意代码中不能出现字符串</script>,使用转义字符“\”,转义‘/’
4. 与解释行内JavaScrip一样,在解释外部JavaScript文件时,页面也会阻塞。(阻塞时间也包含下载文件的时间)
5. 使用了src属性的<script>元素不应该再在<script>和</script>标签中再包含其他JavaScript代码。如果两者都提供,则浏览器只会下载并执行脚本文件,从而忽略行内代码。
6. src属性为完整URL时,会发送一个get请求,不受浏览器同源策略限制。使用integrity属性是防范跨域攻击的一个武器。
7. 对于未使用defer和async属性的<script>文件,浏览器一定按照顺序依次加载执行。
2.1.1标签位置
<script>放在<body>元素中的页面内容后面。页面会在处理JavaScript代码之前完全渲染页面,减少浏览器留白时间。
2.1.2推迟执行脚本
defer这个属性通常用于待执行的脚本不会改变页面的结构,可以在整个页面解析完之后再运行。立即下载,推迟执行,通常按defer出现的次序执行(但实际可能不一定)。
2.1.3异步执行脚本
async属性告诉浏览器立即开始下载,谁先下载完谁先执行。
2.1.4动态加载脚本
向DOM中动态添加script元素。
2.4<noscript>元素
使用<noscript>元素,可以指定在浏览器不支持脚本或对脚本的支持已关闭时显示的内容。若浏览器支持并启用脚本,则<noscript>元素中的任何内容都不会被渲染。