为什么点击事件两次才生效?

框架使用的是Vue,需求是弹出一个遮罩层当我点击body时关闭。我在apiready中是这样写的:

apiready = function() {
        initVue();
        document.body.onclick = function(evt){
            console.log(1);
        }
 }

但是发现点击两次才生效。后来我直接把点击事件写在body上:

<body onclick="vm.close()">

这样就正常了。这是为什么?

已解决 悬赏分:20 - 解决时间 2021-11-25 12:39
反对 0举报 0 收藏 0

回答4

最佳
  • @

    第一次是先挂载事件 第二次点击才执行了
    换成监听点击事件试试

    支持 0 反对 0 举报
    2021-11-25 08:02
  • @

    查一查 apiready 这个函数是在什么时候执行的
    在里面加一行代码console.log(1)看看什么时候执行

    支持 0 反对 0 举报
    2021-11-25 08:15
  • @

    问题应该出在initVue

    支持 0 反对 0 举报
    2021-11-25 09:42
  • @

    把点击事件卸载apiready方法外面就实现了第一次挂载,亲测有效,记得采纳我哟

    支持 0 反对 0 举报
    2021-11-25 10:34