Код window.addEventListener не работает на мобильном телефоне - PullRequest
0 голосов
/ 01 февраля 2019

Пожалуйста, у меня есть проблема в моем коде JS, я создал этот код, потому что я хотел бы, чтобы, когда посетитель нажимал на другой элемент div (не меню), меню закрывалось, если открывался, это код, но этот код не работаетна мобильных телефонах, но он работает в инструментах разработчика на Chrome или Firefox

<script>
window.addEventListener('mouseup', function(event){
    var box = document.getElementById('narvbar_menu');
    if (event.target != box && event.target.parentNode != box){
        box.style.display="none";
        document.getElementById("close_menu").style.display="none";
    }
});
</script>

С уважением

1 Ответ

0 голосов
/ 01 февраля 2019

Это потому, что "mouseup" не срабатывает на мобильных устройствах.Также слушайте "touchend":

РЕДАКТИРОВАТЬ: Приведенный ниже код должен добавить слушатели событий для "mouseup" и "touchend" к окну.

<script>
    ["mouseup", "touchend"].forEach(function(e) {
        window.addEventListener(e, function(event){
            var box = document.getElementById('narvbar_menu');
            if (event.target != box && event.target.parentNode != box){
                box.style.display="none";
                document.getElementById("close_menu").style.display="none";
            }
        });
    })
</script>

Если вы не хотите прослушивать несколько событий, "click" должно работать как для мобильных, так и для настольных компьютеров:

window.addEventListener("click", function(event) { ... }
...