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

Posted 黑色白沙的园子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了页面内部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();
就可以了。
很实用

以上是关于页面内部DIV让点击外部DIV 事件不发生(阻止冒泡事件)的主要内容,如果未能解决你的问题,请参考以下文章

JS阻止冒泡事件以及默认事件发生的简单方法

JQuery阻止事件冒泡

vue阻止冒泡事件 阻止点击事件的执行 结合div和组件阻止点击事件

阻止冒泡

vue点击其他地方隐藏div

点击空白处隐藏div-阻止事件冒泡