Zapisz się do Newslettera
// Skrypt do automatycznego zamykania popupu po 20 sekundach bezczynności
(function() {
    // Funkcja wyszukująca i zamykająca popup
    function setupPopupAutoClose() {
        // Szukamy popupu w dokumencie - dopasowane do struktury strony
        var popup = document.querySelector('.brxe-popup');
        
        if (!popup) {
            // Jeśli nie znaleziono popupu, spróbuj inne selektory
            popup = document.querySelector('.brxe-container.popup');
            
            if (!popup) {
                // Wciąż nie znaleziono, spróbuj ogólniejsze selektory
                popup = document.querySelector('[class*="popup"]');
                
                if (!popup) {
                    return; // Jeśli wciąż nie znaleziono, zakończ funkcję
                }
            }
        }
        
        console.log('Znaleziono popup:', popup);
        
        var inactivityTimer;
        var timeoutDuration = 3000; // 20 sekund w milisekundach
        
        // Funkcja resetująca timer
        function resetInactivityTimer() {
            clearTimeout(inactivityTimer);
            inactivityTimer = setTimeout(function() {
                closePopupIfUnchanged();
            }, timeoutDuration);
        }
        
        // Funkcja sprawdzająca czy formularz ma wprowadzone dane i zamykająca popup
        function closePopupIfUnchanged() {
            var formInputs = popup.querySelectorAll('input, textarea, select');
            var formChanged = false;
            
            for (var i = 0; i < formInputs.length; i++) {
                if (formInputs[i].value.trim() !== '') {
                    formChanged = true;
                    break;
                }
            }
            
            if (!formChanged) {
                // Próbujemy znaleźć przycisk zamykania
                var closeButton = popup.querySelector('.brx-popup-close, .close-button, .popup-close, [class*="close"]');
                
                if (closeButton) {
                    // Symuluj kliknięcie przycisku zamykania
                    closeButton.click();
                    console.log('Zamknięto popup przyciskiem');
                } else {
                    // Alternatywne metody zamykania
                    
                    // 3. Dodaj klasę hidden lub closed, jeśli takie są używane
                    popup.classList.add('hide');
                    
                    console.log('Zamknięto popup przez manipulację CSS');
                }
                
                // Jeśli popup jest w overlay, spróbuj też ukryć overlay
                var overlay = document.querySelector('.popup-overlay, .brx-popup-overlay, .modal-backdrop');
                if (overlay) {
                    overlay.style.display = 'none';
                    overlay.classList.remove('open', 'active', 'visible', 'show');
                    overlay.classList.add('hidden', 'closed');
                }
                
                console.log('Popup został automatycznie zamknięty po 20 sekundach bezczynności');
            }
        }
        
        // Ustawienie początkowego timera
        resetInactivityTimer();
        
        // Dodanie nasłuchiwania zdarzeń na elementach formularza
        var formElements = popup.querySelectorAll('input, textarea, select, button');
        for (var i = 0; i < formElements.length; i++) {
            formElements[i].addEventListener('focus', resetInactivityTimer);
            formElements[i].addEventListener('input', resetInactivityTimer);
            formElements[i].addEventListener('click', resetInactivityTimer);
        }
        
        // Dodanie nasłuchiwania ruchu myszką nad popupem
        popup.addEventListener('mousemove', resetInactivityTimer);
    }
    
    // Funkcja wykrywająca otwarcie popupu
    function watchForPopup() {
        // 1. Sprawdź czy popup jest już otwarty
        setupPopupAutoClose();
        
        // 2. Obserwuj zmiany w DOM, aby wykryć otwarcie popupu
        var observer = new MutationObserver(function(mutations) {
            mutations.forEach(function(mutation) {
                if (mutation.addedNodes && mutation.addedNodes.length > 0) {
                    // Sprawdź czy wśród dodanych elementów jest popup
                    setupPopupAutoClose();
                }
                // Sprawdź też zmiany klas (mogą oznaczać otwarcie popupu)
                if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
                    setupPopupAutoClose();
                }
            });
        });
        
        // Obserwuj zmiany w całym dokumencie
        observer.observe(document.body, {
            childList: true,
            subtree: true,
            attributes: true,
            attributeFilter: ['class']
        });
        
        // 3. Dodaj nasłuchiwanie kliknięć, które mogą otwierać popup
        document.addEventListener('click', function() {
            // Opóźnij sprawdzenie, aby dać czas na otwarcie popupu
            setTimeout(setupPopupAutoClose, 500);
        });
    }
    
    // Uruchom wykrywanie popupu gdy strona się załaduje
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', watchForPopup);
    } else {
        watchForPopup();
    }
})();

Zapisz się do Newslettera

Bądź na bieżąco z nowościami i promocjami na produkty profesionalne BaBylissPRO. Zapisz się do naszego newslettera

Zapisz się do Newslettera

Bądź na bieżąco z nowościami i promocjami na produkty profesionalne BaBylissPRO. Zapisz się do naszego newslettera