第五章 浏览器中的JavaScript

1.XHTML中的js声明:

<script type="text/javascript" src=”…”></script>

直接写在中间的js代码中不能使用大于小于和双引号(有待考证)。

2.BOM

window对象是BOM的核心,包括document、frames、history、location、navigator和screen属性。它也是js中全局变量的环境对象。

其中document对象是唯一一个既属于BOM又属于DOM的对象。

第六章 DOM基础

DOM其实就是一棵文档树,以及相关操作。

JavaScript中大部分处理DOM的过程都是利用document对象,该对象同时属于dom和bom。

var ohtml = document.documentElement;返回<html>元素

第七章 正则表达式

js通过ECMAScript中的RegExp类来实现对正则表达式的支持:

var recat = new RegExp(“cat”, “gi”); 

也可以使用perl风格:var reCat = /cat/gi ;

常用方法:

  • test,是否匹配(boolean),RegExp方法
  • exec,返回一个数组,数组中的第一个条目是第一个匹配,其他的是反向引用,RegExp方法
  • match,返回数组,String方法
  • search,与index类似,返回匹配位置,String方法
  • replace,替代,String方法
  • split,分割,String方法

正则表达式的规则和shell中类似,以下几点比较特别:

  • 量词有贪婪、惰性和支配性之分。正常情况下使用的是贪婪,加?是惰性,加+是支配。贪婪量词先看整个字符串是否匹配,若不匹配则去掉字符串的最后一个字符,继续匹配。惰性量词则是先看第一个字母是否匹配,若不匹配则加入下一字母,继续匹配。支配量词只尝试匹配整个字符串,若不匹配则停止。
  • 反向引用(捕获性分组)。如:/(\d+)/,()中就代表了反向引用
  • 非捕获性分组:在较长的正则表达式中,存储反向引用会降低匹配速度。非捕获性分组则省去了存储结果的开销。如:/(?:\d+)/,?:代表非捕获性分组

第九章 事件

1.事件流

IE上使用冒泡型的事件流,即从底层元素向顶层元素冒泡,div-body-html-document

mozilla也支持冒泡,div-body-html-document-window,会一直上升到window窗口对象

另一种叫做捕获性,即从DOM层次的顶端向下延伸。

DOM事件流同时支持两种事件模型,但是捕获型事件先发生,从document(或者是window)对象开始,也在document对象结束。有一点特别之处是文本节点也触发事件(IE中不会)。

2.事件监听

可以直接在dom元素上绑定方法:odiv.onclick = function() {…},但是这种方式每类方法只能绑定一个函数。

在IE中,可以使用attachEvent()和detachEvent()方法进行事件绑定和去除,而且可以绑定多个事件处理函数。两个参数:事件和处理函数

DOM中对应addEventListener()和removeEventListener()方法。三个参数,第三个参数是false则用于冒泡阶段,true用于捕获阶段

3.事件对象

事件对象包含:

  • 引起事件的对象
  • 事件发生时鼠标的信息
  • 事件发生时键盘的信息

在IE中,var oEvent = window.event;得到事件对象

DOM中,event对象作为唯一的参数传给事件处理函数。(系统自动传递,不需要自己传)

var oEvent = argument[0];

4.属性和方法

IE和DOM事件的属性和方法用处大致一样,细节有所不同,具体细节在此不多赘述,参见书本。