Использование событий 'click' и 'touchstart' — есть ли хитрости?

Такие дела.

Есть ли удобный способ назначить либо click, либо touchstart в зависимости от типа устройства?
Или придется проверять if() и дублировать внутри конструкции код?
  • Вопрос задан
  • 660 просмотров
Решения вопроса 2
Inkognitoss
@Inkognitoss
Full-stack разработчик.
В зависимости от устройства можно, особенно если вас устроит проверка через userAgetn
var isMobile = {
    Android: function() {
        return navigator.userAgent.match(/Android/i);
    },
    BlackBerry: function() {
        return navigator.userAgent.match(/BlackBerry/i);
    },
    iOS: function() {
        return navigator.userAgent.match(/iPhone|iPad|iPod/i);
    },
    Opera: function() {
        return navigator.userAgent.match(/Opera Mini/i);
    },
    Windows: function() {
        return navigator.userAgent.match(/IEMobile/i);
    },
    any: function() {
        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
    }
};

Используйте метод isMobile.any() который будет возвращать тру если сейчас задействован мобильный браузер.
(могут быть нюансы, учитывайте)

Например нюанс может возникнуть с полноценными десктопами или ноутбуками, где владелец использует тачскрин.
поэтому ваш вопрос в корне имеет зачатки проблемы, с которыми вы сталкнетесь
Ответ написан
hahenty
@hahenty
('•')
var supportsTouchMove = function() {
  try {
    document.createEvent("TouchEvent");
    return true;
  }
  catch (e) { return false; }
} ();

var bind = supportsTouchMove ?
  function( node, proc ) {
    node.ontouchstart = proc;
  }:
  function( node, proc ) {
    node.onclick = proc;
  };

для touchstart эквивалентнее mousedown.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы