toc-menu

Von $1

    Inhaltsverzeichnis
    keine Gliederung

    Version seit 15:24, 5 Nov 2026

    zu dieser Version.

    Zurück zu Versionshistorie.

    Zeige aktuelle Version

    (function() {
        /* ==========================================================
         * TOC MENU - mit Singleton Guard
         * FIX 24.02.2026: Singleton, Body-Append fuer Stacking Fix
         * ========================================================== */
    
        if (window._tocMenuInit) {
            if (window.console) console.log('[TOC-Menu] SKIP: Bereits initialisiert (Singleton)');
            return;
        }
        window._tocMenuInit = true;
    
        var PREFIX = '[TOC-Menu] ';
        var isMenuOpen = false;
    
        function log(msg) {
            if (window.console && console.log) {
                console.log(PREFIX + msg);
            }
        }
    
        log('Init gestartet...');
    
        var menuIcon = document.getElementById('menuToggleIcon');
    
        if (!menuIcon) {
            log('ERROR: menuToggleIcon nicht gefunden!');
            return;
        }
    
        /* FIX: Aus MindTouch Layout-Container raus an body haengen
         * Damit ist das Icon ausserhalb aller Stacking Contexts
         * (table.columnTable, div.w_body, td.left) */
        document.body.appendChild(menuIcon);
        log('Icon an body verschoben (Stacking Fix)');
    
        menuIcon.addEventListener('click', function(e) {
            e.stopPropagation();
            var dmenu = document.getElementById('menuPageContent');
    
            if (dmenu) {
                if (isMenuOpen) {
                    dmenu.style.display = 'none';
                    isMenuOpen = false;
                    log('Menu geschlossen');
                } else {
                    window.menuBubble = true;
                    dmenu.style.display = 'block';
                    isMenuOpen = true;
                    log('Menu geoeffnet');
                }
            }
        });
    
        document.addEventListener('click', function(e) {
            var dmenu = document.getElementById('menuPageContent');
            if (isMenuOpen && dmenu) {
                var clickedInsideMenu = dmenu.contains(e.target);
                var clickedIcon = menuIcon.contains(e.target);
    
                if (!clickedInsideMenu && !clickedIcon) {
                    dmenu.style.display = 'none';
                    isMenuOpen = false;
                    log('Menu geschlossen (Klick aussen)');
                } else if (clickedInsideMenu && e.target.tagName === 'A') {
                    dmenu.style.display = 'none';
                    isMenuOpen = false;
                    log('Menu geschlossen (Link geklickt)');
                }
            }
        });
    
        log('Fertig! Handler registriert.');
    })();
    

     
    Use the language selection below for English Utilise le sélecteur de langue ci-dessous pour français Per l'italiano, utilizzare la selezione della lingua qui sotto Schön sprichst du deutsch :-)