将 JavaScript 鼠标事件从一个元素传播到另一个元素?

Posted

技术标签:

【中文标题】将 JavaScript 鼠标事件从一个元素传播到另一个元素?【英文标题】:Propagate JavaScript mouse event(s) from one element to another element? 【发布时间】:2020-07-13 07:09:23 【问题描述】:

我正在使用 html div 元素作为 canvas 的工具提示,即当鼠标指针在 canvas 元素上移动时,div 将跟随鼠标的动作。

这行得通——几乎。工具顶部在鼠标指针的东南方向,当指针向东南方向移动时,指针可能会移动到 div 元素上,因此不再有鼠标移动事件到达 canvas .只有当鼠标进一步移动到div 之外时才会解决此问题,这会使div 以一种丑陋的方式跳跃以调整到该位置。

如何避免这些跳转并实现div 对鼠标“透明”?

通常的冒泡不起作用,因为canvas 不能容纳孩子;至少当我将孩子添加到 canvas 时,它们不会显示出来。

没有像 jQuery 这样的外部模块或任何使用/可用的模块。

【问题讨论】:

【参考方案1】:

您应该可以在 div 上使用pointer-events: none;

【讨论】:

似乎不起作用,el.pointerevents = "none";el.pointerEvents = "none"; 都不起作用,其中 el 是各自的 DOM div 元素。 ...啊,明白了。它是 style 的元素,而不是元素本身:el.style.pointerEvents = "none"; 谢谢。 它确实链接到 CSS 文档。 ;) 如果我需要 div 上的 click 事件和画布上的 mousemove 事件怎么办?

以上是关于将 JavaScript 鼠标事件从一个元素传播到另一个元素?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery事件传播,事件流

JavaScript中的事件冒泡?事件传播的解释

如何在 Javascript 中移动子元素时触发一次鼠标事件?

事件传播流程

事件流

微信小程序组件——bindtap和catchtap的区别