fix: Tooltip bleibt nicht mehr nach Navigation stecken, kein nativer Tooltip bei Child-Hover
This commit is contained in:
1 parent
22d2df01d0
commit
52aecc967f
2 files changed
+29
-4
No files matched your search
@@ -10,6 +10,9 @@ function registerPage(name, { init, destroy }) {
|
||||
async function navigateTo(page, params = {}) {
|
||||
const app = document.getElementById('app');
|
||||
|
||||
// Tooltip verstecken
|
||||
if (window.hideTooltip) window.hideTooltip();
|
||||
|
||||
// Alte Page zerstören
|
||||
if (currentPage && routes[currentPage] && routes[currentPage].destroy) {
|
||||
routes[currentPage].destroy();
|
||||
|
||||
+26
-4
@@ -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;
|
||||
})();
|
||||
Reference in new issue
Block a user