如何让 event.path 识别锚标记内的元素?



为了证明我的问题,这是我的HTML版本:

<body>
<a href="google.com">
<div>
<h2>Hello</h2>
<h4>Venus</h4>
</div>
</a>
</body>

然后我在Javascript中使用"onclick"作为正文:

document.body.onclick = function(event) {
console.log(event.path)
}

当我点击"h2"标签时,控制台将只记录[window,html,body,a],而不是"a"标签内的元素。

我想要的结果是当我单击"h2"标签时,event.path 将返回一个 [window, html, body, a,div, h2] 数组

"p"标签也存在此问题。

有没有办法让"event.path"在"a"标签中包含元素?谢谢。

也许这会对你有所帮助

function handleClicks(e) {
var path = [];
var node = e.target;
while(node != document) {
!e.target.contains(node.parentNode) && path.push(node.nodeName); // if you want to exclude the elements inside the clicked element
node =  node.parentNode;
}
console.log(path);
}
document.body.addEventListener('click', handleClicks);
<body>
<a href="#" id="not">
<div>
<h2>Hello</h2>
<h4>Venus</h4>
</div>
</a>
</body>

编辑

请避免在锚标记中使用"div",而是您可以将"span"与一些需要定义的用户类一起使用。

最新更新