JS高级程序设计2nd部分知识要点7

例子:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>

<div id="myDiv">Click me</div>

</body>

</html>

IE的事件流叫做事件冒泡(event bubbling)--事件开始时由最具体的元素(文档嵌套层次最深的寻附上节点)接收,然后逐级向上传播到较为不具体的节点(文档). 总之就是由内到外。

<div> 》<body>》html 》document

事件捕获(event capturing) 由最外层元素节点最先接收事件,最具体的节点最后接收事件。

document 》<html> 》<body> 》<div>

DOM 事件流

DOM2级事件 定义了两个方法 用于处理指定 和删除事件处理程序的操作: addEventListener() 和removerEventlistener() ,都接受3个参数:要处理的事件名,作为事件处理程序的函数和一个布尔值。布尔值参数如果是true,表示在捕获阶段调用事件处理程序,如果是false,表示在冒泡阶段调用事件处理程序。

Firefox, Safari, Chrome 和 Opera支持 DOM2级事件处理程序 IE浏览器不支持

IE的事件处理程序

IE中实现了与DOM中类似的两个方法: attachEvent()和detachEvent(),这两个方法接受相同的两个参数:事件处理程序名称与事件处理程序函数。

跨浏览器事件对象处理

var EventUtil={

addHandler:function(element,type,handler){

if(element.addEventListener){

element.addEventListener(type,handler,false);

}else if(element.attachEvent){

element.attachEvent("on" + type, handler);

}else{

element["on" + type]=handler;

}

},

removeHandler:function(element,type,handler){

if(element.removeEventListener){

element.removeEventListener(type,handler,false);

}else if(element.detachEvent){

element.detachEvent("on" + type, handler);

}else{

element["on" + type]=null;

}

}

};

DOM2级5种事件

1,UI(用户界面)事件,在用户与页面上的元素交互时触发。

a.)DOMActive:

b.)DOMFocusIn:

c.)DOMFocusOut

2,鼠标事件,当用户通过鼠标在页面上执行操作时触发。

a.)click

b.)dbclick

c.)mousedown 在用户按下了任意鼠标按钮时触发,不能通过键盘触发这个事件。

d.)mouseout 不能通过键盘触发这个事件

e.)mouseover 不能通过键盘触发这个事件

f.)mouseup  在用户释放鼠标按钮时触发,不能通过键盘触发这个事件。

g.)mousemove 不能通过键盘触发这个事件

click&dbclick触发事件顺序

mousedown>mouseup>click>mousedown>mouseup>click>dbclick

mouseup和mousedown不受其他事件影响

3,键盘事件,当用户通过键盘在页面上执行操作时触发。

4,HTML事件,当浏览器窗口发生变化或发生特定的客户端/服务器交互时触发。

5,变动(mutation)事件, 当底层DOM结构发生变化时触发。

时间: 2024-08-08 13:57:59

JS高级程序设计2nd部分知识要点7的相关文章

JS高级程序设计2nd部分知识要点5

JS Regexp 字面量模式 用\反斜杠转义 构造函数中的字符串 也用\转义正则也用\ RegExp实例属性 global -布尔值  /g ignoreCase -布尔值 /i lastIndex -整数 表示开始搜索下一个匹配项的字符位置,从0算起. multiline -布尔值 /m source -正则表达式的字符串 RegExp实例方法 exec() 接受一个参数(要应用模式的字符串) ,然后返回包含第一个匹配信息的数组,没匹配近回null,返回的数组包含两个额外的属性:index

JS高级程序设计2nd部分知识要点3

对象转换方法:1> toLocaleString(),2> toString(),ValueOf()方法会返回相同的值 栈方法是 LIFO (后进先出)的数据结构 -push ,pop 方法 队列方法是 FIFO(先进先出)的数据结构 - shift , push,unshift,pop方法(IE对Javascript的实现中存在一个偏差,其unshift()方法总是返回undefined而不是数组的长度.) slice()方法-能够基于当前数组中的一个或多个项创建一个新数组.可以接受一或两个

JS高级程序设计2nd部分知识要点1

保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机的将浮点数值转换为整数值 浮点数值的最高精度是17位小数 parseInt 字符串转换为数值,可传基数(8,16) parseFloat 同上 区别:parseFloat始终会忽略前导的零,只解析十进制的值,16进制的字符串始终会转换成0. 后置递增和递减与前置递增递减重要的区别:递增与递减操作是在包含它们的语句被求值之后才执行的 示例: var num1=2;var num2=20; var num3=num1--

JS高级程序设计2nd部分知识要点4

ECMAScript中所有函数的参数都是按值传递的. 5种基本数据类型: Undfined,Null,Boolean,Number,String. ECMAScript中的所有参数传递的都是值,不可能通过引用传递参数. 函数声明会优先于函数表达式被解析器解析,函数表达式则必须笔等到解析器执行到它所在的代码行,才会真正被解释执行. 例子: alert(sum(10,10)); function sum(num1,num2){ return num1+num2; } ----------------

&lt;JS高级程序设计3&gt;_PART3

1.ECMAScript中所有数都以IEEE-754 64位格式存储,但位操作符不直接操作64位的值.是先64位转换成32位的整数,再操作,得到结果再转成64位. 2.首位是符号位.之后的31位代表整数的值. 3.用toString(2)打印二进制,得到的是被处理过的二进制. 4.按位非(NOT)~,数转成二进制,取反.相当于把操作数先变负再-1; 5.按位与(AND)&,两个数的二进制,有一个0结果就是0,两个都是1才为1. 6.按位或(OR)|,有一个1结果为1,都是0才为0. 7.按位异或

&lt;JS高级程序设计3&gt;_PART4

1.基本数据类型:Undefined,null,Number,String,Boolean.引用数据类型:保存在内存中的对象. 2.JS不允许直接访问内存中的位置,不能直接操作对象的内存空间.所以操作对象时,实际上是操作的对象的引用,而不是实际的对象. 3. var num1 = 1; var num2 = num1; 一个基本类型的变量向另一个赋值时,执行了复制操作,两个变量互不影响. var obj1 = new Object(); var obj2 = obj1; obj1.age = 2

读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图

读书笔记 - js高级程序设计 - 第十三章 事件 canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好 有时候即使浏览器支持,操作系统如果缺缺乏必要的绘图驱动程序,则浏览器即使支持了也没用   <canvas> var drawing = document.getElementById("drawing"); if( drawing.getContext ){ drawing.getContext("2d"

js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定

js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定 addEventListener()与removeEventListener()用于处理指定和删除事件处理程序操作.所有的DOM节点中都包含这两种方法,并且它们都接受3个参数:要处理的事件名.作为事件处理程序的函数和一个布尔值.最有这个布尔值参数是true,表示在捕获阶段调用事件处理程序:如果是false,表示在冒泡阶段调用事件处理程序. 要在按钮上为click事件添加事件处

JS高级程序设计拾遗

<JavaScript高级程序设计(第三版)>反反复复看了好多遍了,这次复习作为2017年上半年的最后一次,将所有模糊的.记不清的地方记录下来,方便以后巩固. 0. <script>元素属性 async表示立即下载脚步,但不应该妨碍页面中其他操作: defer表示延迟到文档完全被解析和显示之后再执行.这两个属性都仅适用于外部脚步,而且现实中脚步不一定按顺序执行.指定async属性的目的是不让页面等待脚步下载和执行. 最好只包含一个延迟脚本,把延迟脚本放在页面最底部仍然是最佳选择.