Я пытаюсь заставить ontouchstart работать на планшете Windows. При обнаружении он отключает верхний слой моих ссылок, так что событие щелчка позволяет меню оставаться открытым (вместо эффекта наведения).
Следующий код работает на других сенсорных устройствах, поэтому я не уверен, нужно ли мне что-то еще делать?
$topLink.on('click', function (e) {
$dropDown.removeClass('child');
$dropDown.not($(this).next('.dropdown')).removeClass('open');
$topLink.not($(this)).removeClass('active-link');
$(this).next('.dropdown').toggleClass('open');
$(this).toggleClass('active-link');
if (("ontouchstart" in document.documentElement) || ($window.width() < 1120)) {
// disable top level links for touch
e.preventDefault();
e.stopPropagation();
}
});
В IE/Edge нет TouchEvents
(по крайней мере, он не включен по умолчанию), у него есть PointerEvents
.
Посмотрите на caniuse.com: PointerEventsTouchEvents