码迷,mamicode.com
首页 > 其他好文 > 详细

页面内部DIV让点击外部DIV 事件不发生(阻止冒泡事件)

时间:2017-08-23 19:12:23      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:nts   elb   event   eve   事件   oar   cal   ima   log   

如标题的情况,经常发生,尤其是在一些弹出框上面之类的。

<script>
    function zuzhimaopao(){
        e.stopPropagation();
    }
</script>

一般的google浏览器添加上面此项就可以,但是发现在FF下并不工作,于是有了如下:

function getEvent(){
        if(window.event)    {return window.event;}
            func=getEvent.caller;
            while(func!=null){
             var arg0=func.arguments[0];
             if(arg0){
                 if((arg0.constructor==Event || arg0.constructor ==MouseEvent
                    || arg0.constructor==KeyboardEvent)
                    ||(typeof(arg0)=="object" && arg0.preventDefault
                    && arg0.stopPropagation)){
                     return arg0;
                 }
             }
             func=func.caller;
        }
        return null;
    }
    //阻止冒泡
    function cancelBubble()
    {
        var e=getEvent();
        if(window.event){
            //e.returnValue=false;//阻止自身行为
            e.cancelBubble=true;//阻止冒泡
        }else if(e.preventDefault){
            //e.preventDefault();//阻止自身行为
            e.stopPropagation();//阻止冒泡
        }
    }

只要在你的方法最后插入  

cancelBubble();
就可以了。
很实用

页面内部DIV让点击外部DIV 事件不发生(阻止冒泡事件)

标签:nts   elb   event   eve   事件   oar   cal   ima   log   

原文地址:http://www.cnblogs.com/Viagra/p/7419592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!