JavaScript高级程序设计读书笔记1-2

第1章 JavaScript简介

JavaScript组成

  • 核心-ECMAScript:对实现该标准规定的各个方面内容的语言的描述,提供核心语言功能
  • 文档对象模型-DOM:是针对XML但经过扩展用于HTML的应用程序编程接口(API),提供访问和操作网页内容的方法和接口
  • 浏览器对象模型-BOM:没有相关的标准,提供与浏览器交互的方法和接口

  • tips:DOM并不值针对JS,很多别的语言也都实现了DOM。

  • 五个浏览器(IE、Firefox、Chrome、Safari、Opera)对ECMAScript支持程度都不错,对DOM的支持彼此相差比较多,BOM实现了某些众所周知的共同特性,但是其他特性还是会因浏览器而异。

第2章 在HTML中使用JavaScript

script函数

  • 如果包含了嵌入代码,则只会下载并执行外部脚本文件,嵌入的代码会被忽略。

标签的位置

  • JS引用一般放在<body>元素中页面内容的后面。在解析包含Js代码之前,页面的内容将完全呈现在浏览器中。如果放在<head>中,必须等到所有的js代码都被下载解析和执行完成以后,才能开始呈现页面内容。

延迟脚本

  • defer="defer"表明脚本会被延迟到整个页面都解析完毕后再运行,立即下载,但是延迟执行。

###异步脚本 ###

  • async立即下载脚本,但不妨碍页面中的其他操作,并不保证按照指定的先后顺序执行。
  • 异步脚本不要在加载期间修改DOM。
  • 异步脚本一定会在页面的load事件前执行。

XHTML

  • XHTML可扩展超文本标记语言,是将HTML作为XML的应用而重新定义的一个标准

小于号(<)在XHTML中将被当做开始一个新标签来解析。有两种方法可以解决:

  1. 用相应的HTML实体(<)替代代码中所有的小于号(<)
  2. 用一个CData片段来包含JS代码。在不兼容XHTML的浏览器中,不支持CData,故使用JS注释
1
2
3
4
5
6
7
8
9
10
11
12
13
script type="text/javascript">
//<![CDATA[
function compare(a, b) {
if (a < b) {
alert("A is less than B");
} else if (a > b) {
alert("A is greater than B");
} else {
alert("A is equal to B");
}
}
//]]>
</script>
  • 在XHTML中,CData片段是文档中的一个特殊区域,这个区域可以包含不需要解析的任意格式的文本内容

嵌入代码与外部文件

支持外部文件的人会有如下优点:

  1. 可维护性
  2. 可缓存
  3. 适应未来

文档模式

  • 混杂模式、标准模式。如果在文档开始出没有发现文档类型声明,则所有浏览器都会默认开启混杂模式。

noscript元素

  • <noscript>用于在不支持JS的浏览器中显示替代的内容。但在启用了脚本的浏览器中,用户不会看到它。
  • 包含在<noscript>元素中的内容只有在下列两种情况中的任何一种出现时,才会显示出来:
  1. 浏览器不支持脚本
  2. 浏览器支持脚本,但是脚本被禁用