<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>事件冒泡</title>
</head>
<body>
<script>
functionfn1(event){
alert('clickgoogle');
}
functionfn2(event){
alert('clickgoogle');
event.preventDefault();
}
functionfn3(event){
alert('clickgoogle');
event.stopPropagation();
}
functionfn4(event){
alert('clickgoogle');
event.preventDefault();
event.stopPropagation();
}
</script>
<divid="container1"onclick="alert('clickcontainer1');">
<divid="container2"onclick="alert('clickcontainer2');">
<ahref="http://www.google.com"target="_blank"onclick="fn1(event);">Google</a>
<ahref="http://www.google.com"target="_blank"onclick="fn2(event);">Google</a>
<ahref="http://www.google.com"target="_blank"onclick="fn3(event);">Google</a>
<ahref="http://www.google.com"target="_blank"onclick="fn4(event);">Google</a>
</div>
</div>
</body>
</html>
运行结果:
点击第一个链接,clickgoogle ->clickcontainer2-> clickcontainer1-> 打开google页面
点击第二个链接,clickgoogle ->clickcontainer2-> clickcontainer1
点击第三个链接,clickgoogle -> open_google_page
点击第四个链接,clickgoogle
preventDefault的作用与returnValue相同.都是用来阻止或取消浏览器以及页面内元素的默认动作.比如说让连接失效,表单不能提交,鼠标右键弹不出菜单.这都是浏览器的默认动作.在有时候我们也许要阻止浏览器的这些行为.preventDefault遵循W3C标准.支持FireFox,但不被IE浏览器支持.
可以看到,事件冒泡是从最初引发事件的HTML节点开始,一步步向上引发父节点的相同事件。
在Firefox中,我们可以通过preventDefault 函数阻止默认的行为(比如这个例子中,点击链接的默认行为是打开链接地址)
通过stopPropagation 函数阻止事件冒泡。
可以看到上面的代码在ie下面是没有什么效果的,
观察IE下的事件冒泡
代码
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>事件冒泡firefox</title>
</head>
<body>
<script>
functionfn1_ie(){
alert('clickgoogle');
}
functionfn2_ie(){
alert('clickgoogle');
event.returnValue=false;
}
functionfn3_ie(){
alert('clickgoogle');
event.cancelBubble=true;
}
functionfn4_ie(){
alert('clickgoogle');
event.returnValue=false;
event.cancelBubble=true;
}
</script>
<divid="container1_ie"onclick="alert('clickcontainer1');">
<divid="container2_ie"onclick="alert('clickcontainer2');">
<ahref="http://www.google.com"target="_blank"onclick="fn1_ie();">Google</a>
<ahref="http://www.google.com"target="_blank"onclick="fn2_ie();">Google</a>
<ahref="http://www.google.com"target="_blank"onclick="fn3_ie();">Google</a>
<ahref="http://www.google.com"target="_blank"onclick="fn4_ie();">Google</a>
</div>
</div>
</body>
</html>
优质内容筛选与推荐>>
1、canvas绘图小总结2、sql语句优化方案3、POJ 3252 Round Numbers(数位dp)4、测试部工作检查观点5、zend framework2 的配置加载过程
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
阅读
好看
已推荐到看一看
你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
取消
分享想法到看一看
确定
最多200字,当前共字