-
使用它将javascript引入HTML页面
-
它的8个属性:
async
立即下载脚本,但不能阻止其他页面动作,只对外部脚本有效charset
代码字符集crossorigin
配置相关请求的CORS(跨域资源共享)设置defer
立即下载脚本,但渲染完页面后才执行,只对外部脚本有效integrity
用于确保CDN(Content Delivery Network,内容分发网络)不会提供恶意内容language
这个属性已废弃,以前用于表示代码块中的脚本语言,如"JavaScript"、"VBScript"等src
外部脚本的路径type
MIME类型,值得注意的是:这个属性如果值是module,代码会被当成ES6模块,这个时候才能在代码中出现import和export关键字 -
行内或外部JavaScript文件代码在被计算完成之前,页面其余内容不会被加载(页面会阻塞),不会显示
-
异步脚本不能保证按照它们出现在页面中的次序执行
-
<script>-</script>标签对之间想要再嵌入<script>,必须对其进行转义
-
使用服务器端脚本语言动态生成JavaScript代码以及在浏览器中将JavaScript扩展语言(如TypeScript,JSX)转译为JavaScript的实现基础:浏览器不会检查所包含的JavaScript文件的扩展名
Tip:服务器根据文件扩展名来响应正确的MIME类型 -
行内JavaScript代码和外部JavaScirpt脚本同时存在时,外部脚本有更高的优先级,行内代码会被忽略
-
src属性指向的资源可以是一个跟包含脚本的页面不在同一个域中的URL,向这个资源发送的请求不受浏览器同源策略的限制,但返回并被执行的JavaScript则受限制,同时,这个请求受到父页面HTTP/HTTPS协议的限制
<script>标签的位置:
- 放在<head>中时,由于页面在浏览器解析到<body>时才会渲染,这样一来,当有较多的JavaScript引入时,就会出现明显的页面渲染延迟,解决这一问题的办法是将其放到页面显示内容之后,</body>之前
动态加载脚本
- 通过向DOM中添加<script>标签并为其添加src属性(注意:这样获取资源对浏览器的预加载器是不可见的),同时,为让预加载器知道这些动态请求资源的存在,需要在文档头部显示声明它们:<link rel="prefetch" href="xxxxx.js">
XHTML中的JavaScript
-
XHTML
(Extensible HyperText Markup Language,可扩展超文本标记语言),实际上就是将HTML作为XML应用的包装 - 在XHTML中必须指定type的值为text/javascript才能应用JavaScript,且在XHTML中需要使用实体来替代对应的符号,例如:以实体"<"替换"<",以">"替换">"等(另外一种方法是:把所有JavaScript代码都包含在一个CDATA中)
-
CDATA块
表示的是可以包含任意文本的区块,其中的内容不作为标签解析,所以不存在将"<"解析为标签的开始的情况
- 在不支持CDATA块的非XHTML兼容的浏览器中要使用JavaScript注释来抵消:
Tip:页面的MIME类型被指定为"application/xhtml+xml"时会触发XHTML模式(不是所有浏览器都支持)
被废弃的语法
- 除非使用XHTML或<script>中包含非JavaScript代码,否则都不建议指定type属性
- 有的浏览器支持JavaScript,有的不支持(如:Mosaic),面对这种情况,采用下面的办法对不支持JavaScirpt的浏览器隐藏JavaScript,同时,支持JavaScript的浏览器可以解析其中的JavaScript代码
使用JavaScript外部文件的优势:
- 可维护
(略) - 缓存
如果两个页面使用同一个JavaScript文件,该文件只会被浏览器下载一次,这样页面加载会快些 - 适应未来