- 浏览: 593460 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (300)
- Web前端 (27)
- Java疑难 (60)
- 面试 (59)
- 汇编语言 (1)
- 计算机组成原理 (2)
- 操作系统 (3)
- 计算机网络 (6)
- C/C++疑难 (9)
- SSH (2)
- Web开发 (15)
- 故障 (3)
- 软件开发 (16)
- Portal开发 (1)
- 后台开发 (6)
- 数据库 (35)
- 设计模式 (4)
- 数据结构与算法 (4)
- Linux (3)
- 项目管理 (10)
- 多线程 (12)
- 嵌入式 (9)
- 网络编程 (4)
- 架构设计 (20)
- 软件工具技巧 (7)
- 并行并发 (4)
- 窗口编程 (7)
- 串口编程 (0)
- Flex (2)
- 协议 (1)
- 通讯方式 (4)
- 性能分析优化 (5)
- 测试相关 (4)
- 海量数据处理 (2)
- JAVA核心技术 (10)
- SOA (3)
- 攻略规划 (1)
- 爬虫/搜索 (2)
- 正则表达式 (1)
- A Comparison Of NoSQL Database Management Systems And Models (1)
最新评论
-
charles751:
分析的很好!但有一点:只要同步组合操作就可以了,不一定非要sy ...
Vector 是线程安全的? -
S346618898:
core Java中有一段:Vector类对自己的所有可修改方 ...
Vector 是线程安全的? -
code_cj:
基本上明白了.但执行顺是否应该是/etc/profile -& ...
profile bashrc bash_profile之间的区别和联系 -
xd2008ck:
各自有各自的场景吧楼主不要太激进了
Vector 是线程安全的? -
zwt2001267:
写的不错,赞一个
Vector 是线程安全的?
A 事件流(event flow )
事件模型分为两种:冒泡型事件、捕获型事件。
冒泡型(dubbed bubbling )事件:指事件按照从最精确的对象到最不精确的对象的顺序逐一触发。
捕获型(event capturing )事件:它与冒泡型事件相反,指事件按照从最不精确的对象到最精确的对象的顺序逐一触发。
捕获型事件也被称作自顶向下(DOM层次)的事件模型。
由于IE 浏览器不支持捕获型事件,因此并没有被广泛应用。
B 事件监听
i > 通用监听方法
示例一:
<p onclick="alert('点击了');">Click Me</p> |
示例二:
<html> |
<head> |
<title> demo </title> |
<meta name="Author" content="xugang" /> |
<script type="text/javascript"> |
// 在onload 事件中添加所有标签的事件 |
window.onload = function(){ |
// 找到对象 |
var o_p = document.getElementById("myp"); |
// 添加对象的onclick 事件 |
o_p.onclick = function(){ |
alert("我被点击了"); |
} |
} |
</script> |
</head> |
<body> |
<p id="myp">Click Me</p> |
</body> |
</html> |
此代码实现了结构与行为的分离。
给浏览器添加监听方法,分为两种:IE 中的监听方法、标准DOM 的监听方法。
ii > IE 中的监听方法
在IE 浏览器中,每个元素都有两个方法来处理事件的监听。分别是:attachEvent( ) 和 detachEvent( ) 。
附加事件方法:[object].attachEvent(“事件名”,方法名);
分离事件方法:[object].detachEvent(“事件名”,方法名);
如:o_p.detachEvent("onclick",click_A);
示例:
<html> |
<head> |
<title> demo </title> |
<meta name="Author" content="xugang" /> |
<script type="text/javascript"> |
<!-- |
function click_A(){ |
alert("click_A"); |
//删除监听函数 |
o_p.detachEvent("onclick",click_B); |
} |
function click_B(){ |
alert("click_B, 我只调用一次。"); |
} |
var o_p; |
window.onload = function(){ |
o_p = document.getElementById("myP"); |
// 添加监听函数 click_A |
o_p.attachEvent("onclick",click_A); |
// 添加监听函数 click_B |
o_p.attachEvent("onclick",click_B); |
} |
//--> |
</script> |
</head> |
<body> |
<p id="myP">Click Me</p> |
</body> |
</html> |
注意:
● 使用这种方式可以为同一元素添加多个监听函数;
● 在IE 浏览器中,函数的执行顺序与函数的添加顺序相反;
● 在IE 浏览器中,虽然函数有先后执行顺序,但都会同时调用;
iii > 标准DOM 的监听方法
在使用标准DOM 的浏览器中,每个元素也有两个方法来处理事件的监听。分别是:addEventListener( ) 和 removeEventListener( ) 。
添加事件监听方法:[object].addEventListener(“事件名”,方法名,事件模型 );
移除事件监听方法:[object].removeEventListener(“事件名”,方法名,事件模型 );
注意:这里的“事件名”不能带 on ,如:click(如果是onclick 则错误!)
“事件模型”为boolean 类型,通常设置为 false ,即“冒泡型”事件。(如果是true 则为“捕获型”事件)
示例:
<html> |
<head> |
<title> demo </title> |
<meta name="Author" content="xugang" /> |
<script type="text/javascript"> |
<!-- |
function click_A(){ |
alert("click_A"); |
//删除监听函数 |
o_p.removeEventListener("click",click_B,false); |
} |
function click_B(){ |
alert("被click_A删除, 一次都不能调用。"); |
} |
var o_p; |
window.onload = function(){ |
o_p = document.getElementById("myP"); |
// 添加监听函数 click_A |
o_p.addEventListener("click",click_A,false); |
// 添加监听函数 click_B |
o_p.addEventListener("click",click_B,false); |
} |
//--> |
</script> |
</head> |
<body> |
<p id="myP">Click Me</p> |
</body> |
</html> |
在Firefox 下运行通过,在IE 下报错。
注意:
● 使用这种方式同样可以为同一元素添加多个监听函数;
● 在Firefox 浏览器中,函数的执行顺序与函数的添加顺序一致(Firefox 与IE 正好相反);
● 在Firefox 浏览器中,这种方式添加的函数是执行外一个再执行另一个(逐个执行);
C 事件对象 i > 在IE 浏览器中,事件对象是window 对象的一个属性event 。访问方式如下: event 对象在事件发生时被访问,执行完函数后就消失了。 ii > 在标准的DOM 中,事件对象是作为处理函数的唯一参数来获得。访问方式如下: 因此,为了兼容各种浏览器,通常采用如下方法: 下面列出了事件常用的几个属性和方法(区别):
function getEvent(){
var o_event = window.event;
}
function getEvent(_event){
var o_event = _event
}
function getEvent(_event){
// Firefox下参数_event 就是event对象
// IE 下获得 event对象
if(window.event)_event = window.event;
// 显示触发的事件名称
alert(_event.type);
}
IE
标准DOM
说明
cancelBubble
cancelBubble
是否冒泡(标准DOM中只读)
无
stopPropagation( )
阻止事件向上冒泡的方法
无
charCode
按下按键的Unicode 值
keyCode
keyCode
IE 中keypress 事件时表示按键的Unicode 值;
标准DOM 中keypress 事件时为0;
其余情况下,keyCode 为按键的数字代号。
srcElement
target
触发事件的元素(对象源)
type
type
事件的名称
此处只列出了事件成员的一小部分。
注意:
在IE 浏览器中,获得触发事件的对象源(HTML标签)是通过event 对象的srcElement 属性;
在标准的DOM 中,获得触发事件的对象源(HTML标签)是通过event 对象的target 属性;
获取事件目标的示例:
<html> |
<head> |
<title>事件的目标</title> |
<script language="javascript"> |
function handle(oEvent){ |
//处理兼容性,获得事件对象 |
if(window.event) oEvent = window.event; |
var oTarget; |
//处理兼容性,获取事件目标 |
if(oEvent.srcElement) |
oTarget = oEvent.srcElement; |
else oTarget = oEvent.target; |
//弹出目标的标记名称 |
alert(oTarget.tagName); |
} |
window.onload = function(){ |
var obj = document.getElementsByTagName("a")[0]; |
obj.onclick = handle; |
} |
</script> |
</head> |
<body> |
<a href="#">获得事件源的示例</a> |
</body> |
</html> |
D 键盘事件
事件 | 说明 |
keydown | 按下键盘上的某个键触发。(一直按住某键则会持续触发) |
keypress | 按下某个按键并产生字符时触发。(即忽略Shift 、Alt 、Ctrl 等功能键) |
keyup | 释放某个按键时触发。 |
触发的顺序为:keydown ---> keypress ---> keyup
i > 关于keyCode属性和charCode 属性
keyCode属性: 表示键盘按键码。因此输入“a”字母和“A”字母时,都是显示键盘码 65 ;
charCode 属性:表示输入字符码。因此输入“a”字母和“A”字母时,
分别显示 97(a 字符码)和 65(A 字符码);
注意:
在标准的DOM 中:既有keyCode属性,还有charCode 属性。
但在标准的DOM 中,keypress 事件中keyCode 属性值始终为0 值;
在IE 浏览器中:事件对象只有keyCode属性,没有charCode 属性。
但在IE 浏览器中,keypress 事件中的keyCode 属性值等同于标准DOM 中的charCode 属性的值;
示例代码:
相关推荐
ppk关于javascript事件的讲解
第三章 JavaScript事件 第三章 JavaScript事件 第三章 JavaScript事件
1.实现JavaScript事件注册;...2.实现JavaScript事件处理函数; 3.实现JavaScript鼠标和键盘事件; 4.实现JavaScript表单相关事件; 5.实现JavaScript字幕滚动事件; 6.实现JavaScript编辑事件;
传播:一系列关于 Javascript 事件的演示 一项正在进行的工作。 很早。 甚至不工作。 在这里看到它: :
javascript事件列表解说.doc
JavaScript事件机制详细研究
下面小编就为大家带来一篇关于javascript事件响应的基础语法总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,祝大家游戏愉快哦
javascript事件触发列表与解说.pdf
JavaScript常用事件JavaScript常用事件JavaScript常用事件JavaScript常用事件JavaScript常用事件JavaScript常用事件JavaScript常用事件JavaScript常用事件JavaScript常用事件JavaScript常用事件JavaScript常用事件...
javascript的事件大全,很详细的介绍
实现JavaScript 动态加载事件
JavaScript的事件;认识事件;JavaScript的事件;JavaScript的事件;JavaScript的事件; 注册和删除事件;JavaScript的事件;JavaScript的事件;JavaScript的事件;JavaScript的事件;JavaScript的事件;JavaScript的事件; 事件...
第6章 JavaScript中的事件与事件处理
javascript表单事件汇总,纯文本格式
开发工具与关键技术:Adobe Dreamweaver JavaScript 事件相关知识点总结 网路安全
关于javascript事件even的扩展讲义,详细讲解,欢饮下载
总结了javascript的各种事件和触发时机
javascript事件冒泡,事件捕获和事件委托详解 1、事件冒泡:在javascript事件传播过程中,当事件在一个元素上出发之后,事件会逐级传播给先辈元素,直到document为止,有的浏览器可能到window为止。并不是所有的...
Javascript_事件处理,讲解了JAVASCRIPT事件开发中注意的事项,步骤,有条理的讲解
系统介绍了javascript事件,包括平常理解不透彻的捕获,冒泡等机制,值得一看