script元素有下列几个属性:
async:可选,表示应立即下载脚本,但不应该妨碍页面中的其他操作。(只对外部脚本文件有效)
charset:可选,表示通过src属性指定代码的字符集。(浏览器大部分会忽略)
defer:可选,表示脚本可以延迟到文档完全被解析和显示之后再执行。(只对外部脚本文件有效)
(相当于告诉浏览器立即下载,但延迟执行)。
在现实当中,延迟脚本并不一定会按照顺序执行,也不一定会在DOMContentLoaded事件触发执行,因此最好只包含一个延迟脚本。
src:可选,要执行代码的外部文件。
type:可选,默认值为text/javascript。
1.不管是外部js文件还是嵌入式js,在解析的时候,页面的处理会暂时停止。
2.js的扩展名不是必须的,但是服务器通常还是需要看扩展名决定为响应应用哪种MIME类型,如果不使用.js扩展名,请确保服务器能返回正确的MIME类型。
3.如果带有src属性的script元素之间还有嵌入式的js代码,只会下载并执行外部js文件,嵌入的代码会被忽略。
4.如果不包含async和defer属性,浏览器会按照它们在页面中出现的先后顺序对它们进行解析。
为了避免页面内容呈现过慢,用户等待时间太长,一般会将<script>元素放到<body>元素中。
外部文件相对于嵌入代码的优点:
1.可维护性。
2.可缓存。
3.适应未来。