fix: Tooltip bleibt nicht mehr nach Navigation stecken, kein nativer Tooltip bei Child-Hover

This commit is contained in:
Meleki committed 2026-03-01 00:01:40 +01:00
1 parent 22d2df01d0
commit 52aecc967f
2 files changed
+29 -4

No files matched your search

+26 -4
View File
@@ -90,6 +90,12 @@
const target = findTitleTarget(e.target);
if (!target) return;
// Gleicher Target → nichts tun (Child-Wechsel innerhalb des gleichen Elements)
if (target === currentTarget) {
clearTimeout(timeout);
return;
}
// title → data-tooltip verschieben (native tooltip unterdrücken)
const title = target.getAttribute('title');
if (title) {
@@ -101,8 +107,13 @@
if (!text) return;
// Falls bereits ein anderer tooltip offen → sofort wechseln
if (currentTarget && currentTarget !== target) {
if (currentTarget) {
hide();
// title des neuen Targets nochmal verschieben (hide hat es nicht zurückgesetzt)
if (target.getAttribute('title')) {
target.setAttribute('data-tooltip', target.getAttribute('title'));
target.removeAttribute('title');
}
}
clearTimeout(timeout);
@@ -112,12 +123,23 @@
document.addEventListener('mouseleave', function (e) {
const target = findTitleTarget(e.target);
if (!target) return;
if (target === currentTarget || timeout) {
hide();
}
if (target !== currentTarget && !timeout) return;
// Prüfe ob die Maus zu einem Kind-Element des gleichen Tooltip-Targets geht
var related = e.relatedTarget;
if (related && target.contains(related)) return;
hide();
}, true);
// Auch bei Scroll/Resize verstecken
document.addEventListener('scroll', hide, true);
window.addEventListener('resize', hide);
// Bei SPA-Navigation verstecken
window.addEventListener('popstate', hide);
window.addEventListener('hashchange', hide);
// Global verfügbar für SPA-Router
window.hideTooltip = hide;
})();