第二章讲的是如何将Javascript引入HTML
<script>
<script>
有以下属性:
-
async
只对外部文件有效,表示立即下载,不妨碍页面其他操作 -
defer
只对外部文件有效, 表示立即下载,不妨碍页面其他操作 -
charset
字符集 -
language
已废弃 -
src
表示外部文件 -
type
编写代码使用的脚本语言的内容类型(即MIME类型),默认为text/javascript
<script>
有两种使用方式:
- 页面中嵌入,需要指定
type
属性,注意嵌入的代码中不能包含</script>
字符串,如需包含,请先转义(<\/script>
)。在解释器对其中代码求值完毕以前,页面剩余内容不会被加载显示。 - 包含外部文件,需要指定
src
属性代表外部文件的位置,浏览器不会检查包含Javascript文件的扩展名,因此可以使用PHP、JSP等动态生成Javascript,如果不使用扩展名,请确保服务器返回正确的MIME类型。此时<script>
与</script>
之间的代码会被忽略。
这里作者还提到了Javascript会阻塞页面加载渲染,之前写过一篇文章,可参考:
HTML 加载过程
标签的位置
传统做法,是将Javascript的加载放在<head>
标签内,但这种做法会使界面呈现(<body>
标签)发生在所有Javascript加载、解析、执行完毕之后,严重影响用户体验,因此推荐将<script>
标签放在</body>
之前。
延迟脚本(defer
)
被标注defer
属性的脚本需立即下载,但要等到整个页面解析完毕后再执行。即使脚本放在<head>
中,也会在</html>
之后按出现的先后顺序执行(按顺序执行仅仅是HTML5的规范)
异步脚本(async)
异步脚本同延迟脚本类似,只是不保证脚本按顺序执行,async
和defer
的目的是不让Javascript的下载和执行堵塞页面其他内容。
关于async
和defer
之后章节会有详细讲述
在XHTML的用法(略,以后会找时间学习XHTML,这里不做笔记)
不推荐使用的语法(略)
嵌入代码与外部文件
一般认为最好使用外部文件来引入Javascript代码,有如下优点:
- 可维护性 可专心地、不触及HTML标签地、统一地更改Javascript代码
- 可缓存
- 可重用(笔者自己加的,由书中的 可缓存 扩展而来)两个HTML文件可使用同一个Javascript文件。
- 适应未来 HTML和XHTML包含外部文件的语法是相同的。
文档模式
IE5.5引入的概念,通过doctype
实现切换。
如果文档开始时不声明,所有浏览器默认开启混杂模式,但是不推荐,因为不同了浏览器这种模式下行为差距很大,推荐使用标准模式或准标准模式。
标准模式:
准标准模式:
zhunbia
标准模式与准标准模式的差异几乎可以忽略不计。
<noscript>
当浏览器不支持Javascript脚本或者Javascript脚本被禁用时该怎么办呢?我们可以使用<noscript>
来显示替代内容,任何可以添加在<body>
中的HTML元素(除<script>
)都可以添加在<noscript>
中