图灵社区学习链接:https://appycyfaqcq1951.pc.xiaoe-tech.com/detail/v_5f3369b0e4b075dc42ad3bfa/3?fromH5=true
一、8个属性
async(异步):可选。立即开始下载脚本,但不阻止其他页面动作(HTML解析),比如下载资源或其他脚本加载。只对外部文件有效。
charset:可选。使用src属性指定的代码字符集。这个属性很少用,因为大多数浏览器不在乎它的值。
crossorigin(跨源):可选。配置相关请求的CORS(跨域资源共享)设置。
crossorigin=“anonymous” //配置文件请求不设置凭据标志
crossorigin=“use-credentials” //设置凭据标志(出站请求包含凭据)
defer(延迟):可选。表示脚本延迟到文档完全解析和显示之后执行。只对外部文件有效。
integrity:可选。比对接收到的资源和指定的加密签名,以验证字资源完整性。该属性可以用于确保CDN(内容分发网络)不会提供恶意内容。
language:废弃。最初用于表示代码中的脚本语言。大多数浏览器都忽略这个属性。
src:可选。有表示要执行代码的外部文件;没有表示包含行内js代码
type:可选。代替language,表示代码块中脚本语言的内容类型。值始终是"text/javascript"。如果加载或包含ES代码,值为"module"
nomodule:支持type="module"的浏览器也支持nomodule。兼容不支持es6的浏览器。主要是IE11。
跨源的源包括三部分:协议(protocol)、域名(domain)、端口(port)。这三个匹配才算是同源。否则就是跨源。
二、脚本加载时机
1、推迟执行脚本defer
脚本会延迟到整个页面都解析完毕后再运行。
<script defer src="demo.js"></script>
2、异步执行脚本async
立即开始下载脚本,但不保证按照它们出现的次序执行。
<script async src="demo.js"></script>
绿色线:解析HTML文本
蓝色:获取脚本
红色:执行脚本
三、<noscript>元素
以下任意一个条件被满足,包含在<noscript>中的内容就会被渲染:
1、浏览器不支持脚本;
2、浏览器对脚本的支持被关闭;
<noscript>
<p>该页面需要支持js脚本的浏览器执行</p>
</noscript>
总结:通过<noscript>元素可以指定在浏览器不支持脚本时显示的内容。如果浏览器支持并启用脚本,则<noscript>元素中的任何内容都不会被渲染。