• 绑定点击事件,当点击事件里依赖异步返回结果则阻止冒泡失效


    背景

    在开发过程中,明明调试好的阻止冒泡没有问题,但是真正使用 时候发现阻止冒泡失效了,原来原因是点击事件里依赖了异步返回结果。

    正常阻止冒泡写法

    <div class="aa notice">
        <div class="bb notice"></div>
    </div>
    <script>
        var arr = document.getElementsByClassName("notice");
        for(let i of arr){
            i.addEventListener("click",function (e) {
                console.log("i",i)
                // 阻止冒泡
                const ev = e || window.event;
                if (ev && ev.stopPropagation) {
                    //非IE浏览器
                    ev.stopPropagation();
                } else {
                    //IE浏览器(IE11以下)
                    ev.cancelBubble = true;
                }
            })
        }
    </script>

    阻止冒泡失效的场景:

    <div class="aa notice">
        <div class="bb notice"></div>
    </div>
    <script>
        var arr = document.getElementsByClassName("notice");
        for(let i of arr){
            i.addEventListener("click",function (e) {
                console.log("i",i)
                doReport(reportList, timeout).then(() => {
                    // 阻止冒泡
                    const ev = e || window.event;
                    if (ev && ev.stopPropagation) {
                       //非IE浏览器
                       ev.stopPropagation();
                    } else {
                       //IE浏览器(IE11以下)
                       ev.cancelBubble = true;
                    }
                })
            })
        }
    </script>

    doReport是一个上报方法,这里要等待上报完成之后再执行点击逻辑,会导致阻止冒泡失效。

  • 相关阅读:
    Python itsdangerous 生成token和验证token
    CentOS在VMware中 网络配置
    Django 框架 django的请求生命周期
    Django 框架 数据库操作2
    Django 框架 Form组件
    Django 框架 数据库操作
    hdu 5008 查找字典序第k小的子串
    hdu 3518 后缀数组
    hdu 3948 后缀数组
    hdu 4283 区间dp
  • 原文地址:https://www.cnblogs.com/beileixinqing/p/14080783.html
Copyright © 2020-2023  润新知