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

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

<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();
就可以了。
很实用
posted @ 2017-08-23 18:33  黑色白沙  阅读(1695)  评论(0编辑  收藏  举报