2.在HTML中使用JavaScript
JavaScript是一种专为网页交互而设计的脚本语言,也就是说,JavaScript是作用于Web的,所以在此不得不提到Web的核心语言——HTML。在最初开发JavaScript时,其中一个重要问题就是如何在不破坏原有HTML的基础上实现JavaScript,经过前人的不断努力和尝试,最终的决定就是为Web添加统一的脚本支持。
2.1 <script元素>
在HTML页面中插入JavaScript的主要方法,就是使用<script>元素。HTML4.01为<script>定义了下列6个属性:
属性 | 定义 | 备注 |
async | 表示立即下载该脚本 | 使用该属性的目的是不让页面等待脚本文件的下载和执行,页面在下载该脚本的同时也可以下载资源或等待加载其他脚本。只对外部脚本文件有效。可选 |
charset | 表示通过src属性指定的代码的字符集 | 由于大多数浏览器会忽略charset的值,因此很少有人会用charset属性。可选 |
defer | 表示脚本可以延迟到文档完全被解析和显示后再执行 | 即定义该属性的脚本文件会在HTML页面完全加载完后再执行。只对外部脚本文件有效,嵌入的JavaScript代码会忽略该属性,延迟的脚本不一定按顺序执行,因此最好只包含一个延迟脚本。可选 |
language | 表示编写代码所使用的脚本语言 | 由于大多数浏览器会忽略其值,已废弃 |
src | 表示包含执行代码的脚本文件的路径(含文件名) | 可选 |
type | 表示编写代码使用的脚本语言的内容类型(也称MIME类型) | 人们使用JavaScript设置的type值一直都是text/JavaScript,但实际上服务器在传送JavaScript文件时使用的MIME类型通常是application/x-javascript,而在type中设置这个值却可能导致该脚本文件被忽略,目前type值默认是text/JavaScript。可选 |
2.1.1 元素的位置
按照惯例,所有的<script>元素都应该放在页面的<head>元素中,例如:
<!DOCTYPE HTML>
<html>
<head>
<title>This is title</title>
<script src="js1.js"></script>
<script src="js2.js"></script>
</head>
<body>
<!--HTML code-->
</body>
</html>
这种做法的目的是把所有外部文件(包括CSS文件和JavaScript文件)的引用都放在相同的地方。但是在<head>元素中包含所有JavaScript文件意味着该网页需要在所有JavaScript文件都下载、解析、执行完毕才能显示原有的HTML页面,如果某个网页需要引用许多个JavaScript文件,那无疑会延长页面内容呈现的时间,而在延迟期间,页面会是一片空白。
为解决这个问题,一般选择将所有JavaScript引用放到<body>内主要内容之后及</body>之前,如:
<!DOCTYPE HTML>
<html>
<head>
<title>This is title</title>
</head>
<body>
<!--HTML code-->
<script src="js1.js"></script>
<script src="js2.js"></script>
</body>
</html>
这样,在下载、解析、执行JavaScript文件前,HTML页面就已经呈现了,用户也会明显感觉到“网页打开得很快”。
2.2 嵌入代码和外部文件
使用<script>元素有两种方式:
1.页面嵌入js代码:在<script>和</script>中插入JavaScript代码:
<script>
alert("hello world.");
</script>
2.引用js外部文件:使用src属性指定外部js文件链接,将外部文件加载进页面:
<script src="js1.js"></script>
无论是哪种方式,在解析JavaScript的过程中,页面的处理都处于暂时停止状态。虽然两种方式都是合法的,但建议将JavaScript代码写到外部js文件中。不过,没有硬性规定一定要这么做,一般选择引用外部文件的原因有:
- 可维护性
- 可缓存
- 适应未来
2.3 <noscript>元素
早期浏览器都面临一个特殊的问题,那就是当浏览器不支持JavaScript时页面该如何友好地反馈给用户。这个问题的解决方法是:创造一个<noscript>元素,在浏览器不支持JavaScript时显示替代的内容:
<!DOCTYPE HTML>
<html>
<head>
<title>This is title</title>
</head>
<body>
<noscript>This page requires browser support JavaScript or turn it enabled </noscript>
<!--HTML code-->
<script src="js1.js"></script>
<script src="js2.js"></script>
</body>
</html>
当浏览器不支持脚本或脚本被禁用时,<noscript>元素代码将执行。
2.4 小结
本章介绍了如何使用JavaScript。可以了解的有:
- 如何将JavaScript插入到页面中
- 添加JavaScript的两种方式
- <script>元素的六种属性
- <noscript>元素的作用
参考文献:
Nicholas C. Zakas.JavaScript高级程序设计(第三版)[M].北京:人民邮电出版社,2012:10-18