javascript-阻止事件冒泡和事件默认行为

来源:互联网 发布:德州农工大学知乎 编辑:程序博客网 时间:2024/06/08 12:04

1.事件冒泡

(1-1)冒泡是什么?
事件冒泡就像热水沸腾时产生汽泡往上升的情形一样(往上传递的过程),事件冒泡出现的情况:假设一个html结构中两个标签存在父子层级关系,父盒子和子盒子都绑定一个相同的方法时,当点击子盒子时将会触发执行两次方法但实际期待:点击子盒子就单独触发子盒子的事件而不涉及父盒子的方法,解决办法:阻止冒泡.
(1-2)阻止冒泡代码
不同浏览器对阻止冒泡的写法存在兼容问题,在ie浏览器中阻止冒泡的方法是window.event.cancelBubble=true而在谷歌,火狐等浏览器的方法则是e.stopPropagation()

<!DOCTYPE html><html>    <head>        <meta charset='UTF-8'>        <title>javascript阻止冒泡和阻止浏览器默认行为</title>    </head>    <body>        <!--阻止冒泡-->        <div onclick='proPagation(event)'>            <button onclick='proPagation(event)'>按钮</button>        </div>    </body>    <script type='text/javascript'>             //预想结果当点击div区域就只弹出一次获取div的元素,当点击button就获取button的元素        //解决方法阻止冒泡        function proPagation(e){        window.event?alert('方法被执行'+(window.event.srcElement)):alert('方法被执行'+e.target)//检测用户点击后触发了什么元素            stopproPagation(e);        }        //阻止冒泡        function stopproPagation(e){            //为什么用三元表达呢!因为考虑到兼容ie浏览器            window.event?window.event.cancelBubble=true:e.stopPropagation();        }    </script></html>

2.阻止默认行为

(2-1)默认行为是什么?
浏览器存在自己的默认行为,默认行为是浏览器的默认初始值!有一些浏览器行为是在事件处理程序执行前发生的,也就是说这些默认行为是无法取消的,需要人为去屏蔽浏览器的默认行为.举个常见例子全选页面内容,浏览器跳转到另外一个页面等都属于浏览器的默认行为.
(2-2)阻止默认行为代码?

<!DOCTYPE html><html>    <head>        <meta charset='UTF-8'>        <title>javascript停止冒泡和阻止浏览器默认行为</title>    </head>    <body>        <!--阻止默认行为-->        <a href='http://www.taobao.com' onclick='stoppreevntDefault(event)'>我要跳转到淘宝页面</a>    </body>    <script type='text/javascript'>             //阻止默认行为        function stoppreevntDefault(e){            //考虑要兼容ie浏览器            e.preventDefault?e.preventDefault():window.event.returnValue=false;        }    </script></html>

3.第二种阻止默认行为的方法但是不阻止冒泡事件

<!DOCTYPE html><html>    <head>        <meta charset='UTF-8'>        <title>javascript停止冒泡和阻止浏览器默认行为</title>    </head>    <body>        <!--阻止默认行为方法2-->        <div id='div'  onclick='alert('div');'>            <ul  onclick='alert('ul');'>            <li id='ul-a' onclick='alert('li');'><a href='www.taobao.com'id='testB' );'>superman</a></li>            </ul>        </div>    </body>    <script type='text/javascript'>             //阻止默认行为第二种方法        var a = document.getElementById('testB');        a.onclick = function(){        return false;        };    </script></html>

4.做个假设能不能又阻止默认行为又阻止冒泡呢?

<!DOCTYPE html><html>    <head>        <meta charset='UTF-8'>        <title>javascript停止冒泡和阻止浏览器默认行为</title>    </head>    <body>        <!--判断能不能既阻止默认行为也阻止冒泡事件-->        <div onclick='stopproPagations(event)'>            <a href='http://www.taobao.com' onclick='stopproPagations(event)'>我要跳转到淘宝页面</a>        </div>    </body>    <script type='text/javascript'>             function proPagation(e){            window.event?alert('方法被执行'+(window.event.srcElement)):alert('方法被执行'+e.target)            stopproPagations(e);        }        //阻止冒泡和默认行为的方法!        function stopproPagations(e){        window.event?window.event.cancelBubble=true:e.stopPropagation();        e.preventDefault?e.preventDefault():window.event.returnValue=false;        }    </script></html>
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩米粉吃多了怎么办 宝宝四个月了奶水不足怎么办 4个月奶水不足怎么办 孩子不吃奶粉母乳又不够怎么办 宝宝吃母乳上火了怎么办 5个月宝宝厌奶期怎么办 九个月宝宝不吃奶粉怎么办 第5个月奶不够吃怎么办 九个月的宝宝不吃奶粉怎么办 9个月宝宝不肯吃怎么办 11个月不吃辅食怎么办 4个月母乳不足怎么办 宝宝四个月奶不够怎么办 四个月宝宝奶不够吃怎么办 宝宝吃母乳偏瘦怎么办 宝宝吃母乳很瘦怎么办 8个月宝宝流汗太多怎么办 奶水多乳房胀疼怎么办 乳房胀奶奶水减少怎么办 宝宝五个月奶水不够吃怎么办 梦见鬼在梦里怎么办 宝宝晚上奶水不够吃怎么办 十个月晚上奶水不够吃怎么办 产妇晚上奶水不够吃怎么办 刚出生的宝宝不吃母乳怎么办 宝宝六个月奶不够吃怎么办 六个月奶不够吃怎么办 刚出生奶不够吃怎么办 做梦醒了看见鬼怎么办 宝宝到陌生地方哭闹怎么办 大人生病住院小孩没人带怎么办 孕妇被小猫抓了怎么办 怀孕了家里有猫怎么办 厕所被湿纸巾堵了怎么办 5天新生儿不拉屎怎么办 4月宝宝不拉屎怎么办 两岁宝宝晚上睡觉哭闹怎么办 2月婴儿吐奶很多怎么办 心情不好回奶了怎么办 四个月了没奶怎么办 八岁宝宝还尿床怎么办