【发布时间】:2020-07-04 03:12:12
【问题描述】:
基本上我想要实现的是收听附加到文档的“mousemove”事件,一旦我将鼠标悬停在元素上,我会检查它是否溢出了文本,如果是,我将其截断并将标题属性添加到具有完整的目标元素文本,以便当用户将鼠标悬停在其上时,浏览器会显示带有此文本的默认工具提示。
这个逻辑本身工作得很好,但它有很大的缺陷。它会降低我的应用程序的性能,因为我在其中使用了 getComputedStyle()。
为了解决这个问题,我尝试使用 RxJS debounce,效果很好。但是,如果用户快速移动鼠标然后停止,以便该元素仅发出 1 个事件,则工具提示将添加到 DOM 但不显示。
据我了解,从浏览器的角度来看,一切正常,因为当用户将鼠标悬停在元素上时,还没有标题,并且一旦添加,用户就不再移动鼠标,因此不会显示工具提示。
fromEvent(document, 'mouseenter')
.pipe(
debounceTime(20),
tap(($event: Event) => {
this.addTooltip($event);
})
)
.subscribe();
问题是有人知道我该如何解决这个问题吗?
【问题讨论】:
标签: javascript dom browser rxjs