浅谈JavaScript的事件
作者:bea
1、事件流 事件流描述的是从页面中接收事件的顺序。但是IE提出的是冒泡流,而Netscape Communicator提出的是捕获流。 JavaScript事件流 2、事件冒泡(event bubbling) 事件开始由最具体的元素(嵌套层次最深的那个节点)接收,然后逐级向上传播为较不为具体的节点(文档)。如下: 代码如下: <html> <head> <title>事件冒泡</title> </
1、事件流
事件流描述的是从页面中接收事件的顺序。但是IE提出的是冒泡流,而Netscape Communicator提出的是捕获流。 JavaScript事件流
2、事件冒泡(event bubbling)
事件开始由最具体的元素(嵌套层次最深的那个节点)接收,然后逐级向上传播为较不为具体的节点(文档)。如下:
代码如下:
<html>
<head>
<title>事件冒泡</title>
</head>
<body>
<div id="myDiv">点击我</div>
</body>
</html>
window.onload = function(){
var obj = document.getElementById("test");
obj.onclick = function(){
alert(this.tagName);
};
document.body.onclick = function(){
alert(this.tagName);
};
document.documentElement.onclick = function(){
alert(this.tagName);
};
document.onclick = function(){
alert("document");
};
window.onclick = function(){
alert("window");
}
};
事件传播顺序:div——>body——>html——>document
注意: 现代所有浏览器都支持冒泡事件,但实现还有一些差别。IE5.5及更早版本中的事件冒泡会直接从body跳到document(不执行html)。Firefox、Chrome和Safari则将事件一直冒泡到window对象。
3、停止事件冒泡和取消默认事件
a. 获取事件对象
代码如下:
function getEvent(event) {
// window.event IE
// event 非IE
return event || window.event;
}
b 功能:停止事件冒泡
代码如下:
function stopBubble(e) {
// 如果提供了事件对象,则这是一个非IE浏览器
if ( e && e.stopPropagation ) {
// 因此它支持W3C的stopPropagation()方法
e.stopPropagation();
} else {
// 否则,我们需要使用IE的方式来取消事件冒泡
window.event.cancelBubble = true;
}
}
c. 阻止浏览器的默认行为
代码如下:
function stopDefault( e ) {
// 阻止默认浏览器动作(W3C)
if ( e && e.preventDefault ) {
e.preventDefault();
} else {
// IE中阻止函数器默认动作的方式
window.event.returnValue = false;
}
return false;
}
有用 | 无用
事件流描述的是从页面中接收事件的顺序。但是IE提出的是冒泡流,而Netscape Communicator提出的是捕获流。 JavaScript事件流
2、事件冒泡(event bubbling)
事件开始由最具体的元素(嵌套层次最深的那个节点)接收,然后逐级向上传播为较不为具体的节点(文档)。如下:
代码如下:
<html>
<head>
<title>事件冒泡</title>
</head>
<body>
<div id="myDiv">点击我</div>
</body>
</html>
window.onload = function(){
var obj = document.getElementById("test");
obj.onclick = function(){
alert(this.tagName);
};
document.body.onclick = function(){
alert(this.tagName);
};
document.documentElement.onclick = function(){
alert(this.tagName);
};
document.onclick = function(){
alert("document");
};
window.onclick = function(){
alert("window");
}
};
事件传播顺序:div——>body——>html——>document
注意: 现代所有浏览器都支持冒泡事件,但实现还有一些差别。IE5.5及更早版本中的事件冒泡会直接从body跳到document(不执行html)。Firefox、Chrome和Safari则将事件一直冒泡到window对象。
3、停止事件冒泡和取消默认事件
a. 获取事件对象
代码如下:
function getEvent(event) {
// window.event IE
// event 非IE
return event || window.event;
}
b 功能:停止事件冒泡
代码如下:
function stopBubble(e) {
// 如果提供了事件对象,则这是一个非IE浏览器
if ( e && e.stopPropagation ) {
// 因此它支持W3C的stopPropagation()方法
e.stopPropagation();
} else {
// 否则,我们需要使用IE的方式来取消事件冒泡
window.event.cancelBubble = true;
}
}
c. 阻止浏览器的默认行为
代码如下:
function stopDefault( e ) {
// 阻止默认浏览器动作(W3C)
if ( e && e.preventDefault ) {
e.preventDefault();
} else {
// IE中阻止函数器默认动作的方式
window.event.returnValue = false;
}
return false;
}
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- js实现鼠标感应图片展示的方法
- JQuery基础语法小结
- JS实现网页背景颜色与select框中颜色同时变化的方法
- 分析了一下JQuery中的extend方法实现原理
- JS实现在页面随时自定义背景颜色的方法
- JQuery中绑定事件(bind())和移除事件(unbind())
- Jquery中Event对象属性小结
- jQuery中hover方法和toggle方法使用指南
- JS实现往下不断流动网页背景的方法
- jQuery+easyui中的combobox实现下拉框特效
- asp.net+js实现金额格式化
- JavaScript检测浏览器cookie是否已经启动的方法
- jQuery如何防止这种冒泡事件发生
- js实现网页右上角滑出会自动消失大幅广告的方法
- JavaScript获取元素尺寸和大小操作总结
- JS+CSS实现带关闭按钮DIV弹出窗口的方法
- Javascript writable特性介绍
- jQuery实现DIV层收缩展开的方法
- JavaScript函数详解