除非在setTimeout内,为什么窗口上的click事件没有目标事件路径?

时间:2016-09-26 16:12:34

标签: javascript javascript-events

我正在开发一个用于某些数据收集的JavaScript库。我需要捕获所有点击事件,并希望遍历事件路径,以便在点击时查找特定的标签/ ids /类。

如果我在没有setTimeout的情况下运行以下代码,则事件路径总是返回数组中Window的单个对象。添加setTimeout,事件路径按预期进行。

window.addEventListener('click', function (event) {    
    // setTimeout with a 4ms delay to push to the end of the JS execution queue.
    setTimeout(function() {
        console.log(event.path);
    }, 4);
});

1 个答案:

答案 0 :(得分:0)

你应该等待窗口加载,使用下面的代码,这样你就可以得到相同的结果而不会有时间延迟:

window.onload = function() {
   document.addEventListener('click', function (event) {    
       console.log(event.path);
   });
};