javascript高级程序设计(二)
时间:2010-10-08 来源:heartofrong
第五章 浏览器中的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事件的属性和方法用处大致一样,细节有所不同,具体细节在此不多赘述,参见书本。