Pada dasarnya apa yang ingin saya capai adalah mendengarkan acara 'mousemove' yang dilampirkan ke dokumen dan setelah saya mengarahkan kursor ke elemen, saya memeriksa apakah teksnya meluap, dan jika ya, saya memotongnya dan menambahkan atribut judul ke elemen target dengan teks lengkap sehingga ketika pengguna mengarahkannya, browser menampilkan tooltip default dengan teks ini.
Logika ini berfungsi dengan baik tetapi memiliki kelemahan besar. Itu mematikan kinerja aplikasi saya karena saya menggunakan getComputedStyle() di dalamnya.
Untuk mengatasi ini saya mencoba menggunakan debounce RxJS dan berfungsi dengan baik. Namun jika pengguna menggerakkan mouse dengan cepat lalu berhenti sehingga hanya ada 1 event untuk elemen tersebut yang dikeluarkan, maka tooltip ditambahkan ke DOM tetapi tidak ditampilkan.
Seperti yang saya pahami apa yang terjadi dari perspektif browser semuanya berfungsi dengan baik karena ketika pengguna mengarahkan elemen belum ada judul dan setelah ditambahkan pengguna tidak lagi menggerakkan mouse sehingga tooltip tidak ditampilkan.
fromEvent(document, 'mouseenter')
.pipe(
debounceTime(20),
tap(($event: Event) => {
this.addTooltip($event);
})
)
.subscribe();
Pertanyaannya adalah adakah yang tahu bagaimana cara mengatasi masalah ini?