一、起源历史
在当初Netscape公司为了解决JavaScript和HTML之间不会产生冲突,最后决定为Web统一增加脚本支持,从而<script>
标签就孕育而生了,最后也被保留在HTML规范内。
二、<script>元素
1、关于<script>
标签,它有六个属性,分别代表着不同的意义
1.1、async(可选)
表示立即下载该脚本,但不妨碍页面中其他的操作(比如:页面内容的解析),执行时间不确定(只对外部引入文件有效)。
1.2、charset(可选,一般不怎么用)
定义脚本中使用的字符编码。
1.3、defer(可选)
表示立即下载该脚本,待页面内容解析完毕后在执行脚本(只对外部引入文件有效)。
1.4、language (已废弃)
1.5、src (可选)
表示所引入文件(实质为所引入文件地址)
1.6、type (必选)
表示脚本的内容类型Content-type(也称MIME类型)。兼容性最好的是text/javascript,若是没有显式声明,则默认为text/javascript
2、注意事项
2.1、对于内联js,若脚本内部存在'</script>'
时,请注意对其转义处理
当浏览器加载内联js时,当解析到字符串'</script>'
时,就会认为此次js结束,但是又由于这是此非正常结束,所以浏览器会抛出错误Uncaught SyntaxError: Invalid or unexpected token
【语法错误】。对此我们就需要进行转义处理,比如:'<\/script>'
。
2.2、当使用'</script>'
作用于引入外部文件时,其'</script>'
内部不应该写有代码【即使有也会被忽略不进行加载执行】。
三、标签的位置
一般最好放在</body>
的上面,内容页的下面。
在传统的做法是把'</script>'
放在head里面,但是这就造成了一种潜在风险。万一外部引入的js加载比较慢呢?这就很可能造成页面的短暂性空白,这是很不友好的。所以我们可以将'</script>'
放在</body>
的上面,内容页的下面,从而使得先加载解析页面显示内容部分,之后再加载解析js部分。
四、<noscript>元素
在浏览器不支持脚本或则浏览器禁止脚本,<noscript>
内部内容才会被显示出来。一般作用于提醒作用,比如
<noscript>
<p>本页面需要浏览器支持(启用)JavaScript</p>
</noscript>
附图一张