web中事件控制的问题

web中事件有关的操作,比如修改事件的默认行为和防止事件的传播等,web开发中有关事件控制有关的方法:

 event.preventDefault(), event.stopPropagation(), event.cancelBubble()

1,event.preventDefault() 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)。
例如, 链接 单击后默认行为即链接到给定的链接地址,但通过该方法可以设置函数改变链接的默认单击行为。
注意,如果 Event 对象的 cancelable 属性是 fasle (说明没有默认动作可以取消),那么就没有默认动作,或者不能阻止默认动作。则调用该方法无效。

function xxFun(evt){
	//兼容实现--阻止事件的默认行为	
    var e = evt || window.event;	
	if(window.event){ 		
		e.returnValue = false;  //ME IE
	}else{ 		
		e.preventDefault();     //W3C Browser
	}
    //...other code...
}

2,event.stopPropagation() 该方法将停止事件的传播/冒泡,阻止它被分派到其他 Document [主要是当前节点的下面]节点,

阻止事件的传播/冒泡的方法是 cancelBubble(MS IE)和 stopPropagation(standard W3C)。在事件传播的任何阶段都可以调用它。
注意,虽然该方法不能阻止同一个 Document 节点上的其他事件句柄被调用,但是它可以阻止把事件分派到其他节点。

function yyFun(evt){
	//兼容实现--阻止事件的传播/冒泡
    var e = evt || window.event;	
	if(window.event){				
		e.cancelBubble = true;  //支持cancelBubble属性的浏览器,如IE,Chrome等
	}else{			
		e.stopPropagation();    //W3C Browser
	}
    //...other code...
}

完整的例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Event about</title>
<style type="text/css">
*{ font-family:verdana,arial; font-size:12px;}
p{line-height:18px;}
pre{ padding:5px; font-family:verdana,arial; border:1px dotted blue; color:#03F; font-size:11px; margin:15px 0px;}
</style>

<script type="text/javascript" language="javascript">
function divFun(evt){
	alert('这里是事件到达DIV的响应函数提示');	
}

function aFun(evt){
	var e = evt || window.event;	
	var oa = document.getElementById("alink1");	
	var msg = '1,这里是事件到达链接[url = ' + oa.href + ']的响应函数, 但并未链接到指定的URL,因为链接的默认单击事件行为被改变了\n';
	msg += '注意:只是阻止默认的“单击”事件的默认行为,但对本节点的其它事件如onmouserover等事件不影响';
	msg += '\n2,同时阻止事件向下面的节点DIV传递事件';
	alert(msg);	
	
	//兼容实现--阻止事件的默认行为	
	if(window.event){ 		
		e.returnValue = false; //ME IE
	}else{ 		
		e.preventDefault();    //W3C Browser
	}
	
	//兼容实现--阻止事件的传播/冒泡
	if(window.event){				
		e.cancelBubble = true;  //支持cancelBubble属性的浏览器,如IE,Chrome等
	}else{			
		e.stopPropagation();    //W3C Browser
	}	
}

function aoverFun(obj){
	//alert('这里是双击之后相应的函数提示,这个时间跟单击事件无关');	
	var o = document.getElementById("msgTip");
	o.innerHTML = '链接文字: [' + obj.innerHTML + ' ], URL = ' + obj.href + '<br>这里是鼠标在上面的响应事件';	
}

function aoutFun(){
	document.getElementById("msgTip").innerHTML ='';
}
</script>
</head>
<body>
<p>
事件控制有关的方法: <b>event.preventDefault(), event.stopPropagation(), event.cancelBubble()</b>
</p>
<p>
<b>event.preventDefault()</b>
该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)。<br/>
例如, 链接 单击后默认行为即链接到给定的链接地址,但通过该方法可以设置函数改变链接的默认单击行为。<br/>
注意,如果 Event 对象的 cancelable 属性是 fasle (说明没有默认动作可以取消),那么就没有默认动作,或者不能阻止默认动作。则调用该方法无效。
</p>
<pre>
function xxFun(evt){
	//兼容实现--阻止事件的默认行为	
    var e = evt || window.event;	
	if(window.event){ 		
		e.returnValue = false;  //ME IE
	}else{ 		
		e.preventDefault();     //W3C Browser
	}
    //...other code...
}
</pre>

<p>
<b>event.stopPropagation()</b>
该方法将停止事件的传播/冒泡,阻止它被分派到其他 Document [主要是当前节点的下面]节点,<br/>
阻止事件的传播/冒泡的方法是 cancelBubble(MS IE)和 stopPropagation(standard W3C)。在事件传播的任何阶段都可以调用它。<br/>
注意,虽然该方法不能阻止同一个 Document 节点上的其他事件句柄被调用,但是它可以阻止把事件分派到其他节点。
</p>
<pre>
function yyFun(evt){
	//兼容实现--阻止事件的传播/冒泡
    var e = evt || window.event;	
	if(window.event){				
		e.cancelBubble = true;  //支持cancelBubble属性的浏览器,如IE,Chrome等
	}else{			
		e.stopPropagation();    //W3C Browser
	}
    //...other code...
}
</pre>

<div onclick="javascript:divFun(event);" style="padding:20px; border:1px solid red; width:500px;">
div 容器,其包含里[上]面的 a 元素,单击这里试看
<a id="alink1" href="http://www.baidu.com" style="padding:10px; border:1px solid blue; margin:5px 0px; display:block;" 
 onclick="javascript:aFun(event);" onmouseover="javascript:aoverFun(this);" onmouseout="javascript:aoutFun();">
<b>TEST</b>
这里是 a 元素容器,其下面是div容器,点击看看
</a>
</div>
<p>
<div id="msgTip"></div>
</p>

</body>
</html>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值