JavaScript诞生于1995年,1997年以JavaScript1.1 为蓝本的建议被提交给了ECMA组织,形成了ECMAScript标准。1998年ISO/IEC也采用了ECMAScript作为标准,自此,ECMAScript成为了JavaScript实现的基础。
一、javascript实现
一个完整的javascript实现应由下列三个不同的部分组成。
□ 核心(ECMAScript)
□ 文档对象模型(DOM)
□ 浏览器对象模型(BOM)
二、ECMAScript
ECMA-262定义的ECMAScript与Web浏览器没有依赖关系,它并不包含输入和输出定义,只是ECMAScript语言的基础。
1、文档对象模型(DOM)
DOM是针对XML但经过扩展用于HTML的应用程序编程接口。
DOM把整个页面映射为衣蛾多层结点结构。
eg:
<html>
<head>
<title>Sample Page</title>
</hedad>
<body>
<p>Hello World!</p>
</body></html>
DOM树结构如下:
浏览器对象模型(BOM)
BOM没有标准可以遵循。
总结
javascript是一种专为与网页交互而设计的脚本语言,由一下三个不同的部分组成:
□ ECMAScript,由ECMA-262定义,提供核心语言功能;
□ 文档对象模型(DOM),提供访问和操作网页内容的方法和接口;
□ 浏览器对象模型(BOM),提供与浏览器交互的方法和接口,
<script>元素
使用<script>元素向HTML页面中插入JavaScript,HTML4.01为<script>定义了6个属性。
- async:可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。
- charset:可选。表示通过src属性指定的代码的字符集。由于大多数浏览器会忽略它的值,因此这属性很少有人用。
- defer: 可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。IE7及更早八本对嵌入脚本也支持这个属性。
- language:已废弃。
- src:可选。表示包含要执行代码的外部文件。
- type:可选。可以看成是language的替代属性;表示编写代码使用的脚本怨言的内容类型(也称为MIME类型)。
标签的位置
按照惯例,所有<script>元素都应该放在页面的<head>元素中。
为了避免浏览器等待javaScript代码下载、解析和执行完成以后才开始呈现页面内容,一般都把全部JavaScript引用放在<body>元素中页面的内容后面。
延迟脚本
defer属性用于表明脚本在执行时不会影响页面的构造。
<!DOCTYPE html><html>
<head>
<title>Example HTML Page</title>
<script type="text/javascript" defer="defer" src="example1.js"></script>
<script type="text/javascript" defer="defer" src="example2.js"></script>
</head>
<body>
<!-- 这里放内容 -->
</body></html>
以上代码中的js文件会延迟到浏览器遇到</html>标签后再执行。
HTML5规范要求脚本按照它们出现的先后顺序执行,因此第一个延迟脚本会先于第二个延迟脚本执行,而这两个脚本会先于DOMContentLoaded时间执行。
在现实当中,延迟脚本并不一定会按照顺序执行,也不一定会在DOMConbtentLoaded事件触发前执行,因此最好只包含一个延迟脚本。
异步脚本
async属性告诉浏览器立即下载文件,但并不立即执行。
eg:
<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page</title>
<script type="text/javascript" async src="example1.js"></script>
<script type="text/javascript" async src="example2.js"</script>
</head>
<body>
<!-- 这里放内容 -->
</body>
<html>
异步脚本一定会在页面load事件前执行,但可能会在DOMContentLoaded事件触发之前或之后执行。
支持异步脚本的浏览器有Firefox3.6、Safari5和Chrome。
※在XHTML文档中,要吧async属性设置为async="async"