在firefox下
有三个嵌套的div ,都绑定了click事件。
并且都设了 stoppropagation 阻止冒泡
并且都设了 允许 usecapture 允许捕捉现在我点击最内层的div后。为什么结果是最外层的div,捕获了呢?根据事件传播的途径,是先捕获的,应该说是,3个div都捕获到
如果不捕获到的话,至少内层的div 应该可以捕获到代码如下 非ie可用
<!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-Language" content="zh-cn" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>useCapture</title>
<style type="text/css">
#outDiv
{
padding:10px 10px 10px 10px;
border:1px solid red;
}#middleDiv
{
padding:10px 10px 10px 10px;
border:1px solid green;
}#inDiv
{
padding:10px 10px 10px 10px;
border:1px solid blue;
}
</style>
</head><body><div id="outDiv">
<div id="middleDiv">
<div id="inDiv">请在此点击鼠标。</div>
</div>
</div><div id="info"></div><script language="javascript" type="text/javascript">
<!--
var outDiv = document.getElementById("outDiv");
var middleDiv = document.getElementById("middleDiv");
var inDiv = document.getElementById("inDiv");
var info = document.getElementById("info");
outDiv.addEventListener("click", function (e) { e.stopPropagation();info.innerHTML += "outDiv" + "<br>"; }, true);
middleDiv.addEventListener("click", function (e) { e.stopPropagation();info.innerHTML += "middleDiv" + "<br>"; }, true);
inDiv.addEventListener("click", function (e) { e.stopPropagation();info.innerHTML += "inDiv" + "<br>"; }, true);
//-->
</script></body></html>
有三个嵌套的div ,都绑定了click事件。
并且都设了 stoppropagation 阻止冒泡
并且都设了 允许 usecapture 允许捕捉现在我点击最内层的div后。为什么结果是最外层的div,捕获了呢?根据事件传播的途径,是先捕获的,应该说是,3个div都捕获到
如果不捕获到的话,至少内层的div 应该可以捕获到代码如下 非ie可用
<!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-Language" content="zh-cn" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>useCapture</title>
<style type="text/css">
#outDiv
{
padding:10px 10px 10px 10px;
border:1px solid red;
}#middleDiv
{
padding:10px 10px 10px 10px;
border:1px solid green;
}#inDiv
{
padding:10px 10px 10px 10px;
border:1px solid blue;
}
</style>
</head><body><div id="outDiv">
<div id="middleDiv">
<div id="inDiv">请在此点击鼠标。</div>
</div>
</div><div id="info"></div><script language="javascript" type="text/javascript">
<!--
var outDiv = document.getElementById("outDiv");
var middleDiv = document.getElementById("middleDiv");
var inDiv = document.getElementById("inDiv");
var info = document.getElementById("info");
outDiv.addEventListener("click", function (e) { e.stopPropagation();info.innerHTML += "outDiv" + "<br>"; }, true);
middleDiv.addEventListener("click", function (e) { e.stopPropagation();info.innerHTML += "middleDiv" + "<br>"; }, true);
inDiv.addEventListener("click", function (e) { e.stopPropagation();info.innerHTML += "inDiv" + "<br>"; }, true);
//-->
</script></body></html>
stopPropagation Firefox
cancelBubble IE参考
<!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" lang="gb2312">
<head>
<title> 阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)</title>
<meta name="keywords" content="JavaScript,事件冒泡,cancelBubble,stopPropagation" />
<script type="text/javascript">
function doSomething (obj,evt) {
alert(obj.id);
var e=(evt)?evt:window.event;//
if (window.event) {
e.cancelBubble=true;
} else {
//e.preventDefault();
e.stopPropagation();
}
}
</script>
</head>
<body>
<div id="parent1" onclick="alert(this.id)" style="width:250px;background-color:yellow">
<p>This is parent1 div.</p>
<div id="child1" onclick="alert(this.id)" style="width:200px;background-color:orange">
<p>This is child1.</p>
</div>
<p>This is parent1 div.</p>
</div>
<br />
<div id="parent2" onclick="alert(this.id)" style="width:250px;background-color:cyan;">
<p>This is parent2 div.</p>
<div id="child2" onclick="doSomething(this,event);" style="width:200px;background-color:lightblue;">
<p>This is child2. Will bubble.</p>
</div>
<p>This is parent2 div.</p>
</div>
</body>
</html>