尽管以下内容可能并未真正回答该问题,希望它会提供一些额外的输入。实际上,有两种方法可以获取鼠标当前所经过的所有元素的列表(也许对于较新的浏览器而言):“结构”方法-升序DOM树就像德曼的回答一样,var elements = document.querySelectorAll(':hover');但是,这假设只有子代会覆盖其祖先,通常是这种情况,但通常情况并非如此,尤其是在处理SVG时,DOM树的不同分支中的元素可能会相互重叠。“视觉”方法-基于“视觉”重叠此方法用于document.elementFromPoint(x, y)查找最顶层的元素,暂时将其隐藏(由于我们在相同的上下文中立即对其进行了恢复,因此浏览器将不会实际呈现该元素),然后继续查找第二个最顶层的元素...看起来有些跷,但是它返回您期望的结果,例如,树中的兄弟姐妹元素相互遮挡。请找到此帖子以获取更多详细信息,function allElementsFromPoint(x, y) { var element, elements = []; var old_visibility = []; while (true) { element = document.elementFromPoint(x, y); if (!element || element === document.documentElement) { break; } elements.push(element); old_visibility.push(element.style.visibility); element.style.visibility = 'hidden'; // Temporarily hide the element (without changing the layout) } for (var k = 0; k < elements.length; k++) { elements[k].style.visibility = old_visibility[k]; } elements.reverse(); return elements;}尝试两者,并检查它们的不同收益。