Предотвращение события клика в тегах <a>при прокрутке на мобильном телефоне - PullRequest
0 голосов
/ 06 января 2019

Я запускаю веб-сайт, http://alfstyle.com и у меня возникает проблема при прокрутке телефона. Событие click из тегов происходит непреднамеренно. Это так расстраивает.

Я попытался деактивировать плагины, jQuery, некоторые скрипты и т. Д., И ничего не работает.

Я сделал скриншот, где начинается проблема.

Я пытался предотвратить перенаправление с помощью фрагментов JavaScript, которые я нашел здесь: Прекратить непреднамеренное включение ссылок

но это не работает.

Заранее спасибо!

1 Ответ

0 голосов
/ 06 января 2019

Обычно прокрутка на мобильных сайтах не активирует ссылки, как на вашей веб-странице. Причина, по которой это происходит, из-за дополнительного кода, введенного на страницу. Я нашел часть кода, которая вносит ненужные изменения в window.location.

function toggleSubmenuDisplay() {

   document.addEventListener('touchstart', function(event) {

    if ( event.target.matches('a') ) {

        var url = event.target.getAttribute( 'href' ) ? event.target.getAttribute( 'href' ) : '';

        // If there’s a link, go to it on touchend
        if ( '#' !== url && '' !== url ) {
            window.location = url;

        // Open submenu if url is #
        }
        ...
     }

Код в настоящее время прикреплен ко всем действиям сенсорного запуска. При касании на мобильном телефоне выполняется этот обработчик, а также выполняется эта часть:

if ( '#' !== url && '' !== url ) {
    window.location = url;
}

Если вы разместите здесь отладчик, вы увидите, что этот код выполняется.

Также удалите этот скрипт, он может перенаправить на жест касания:

 $('a').on('click touchend', function(e) {
        var el = $(this);
        var link = el.attr('href');
        if (link !== undefined && link !== '') {
            window.location = link;
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...