我有2个事件监听器,如:
window.addEventListener("mousewheel", mouseWheel, false);
window.addEventListener("DOMMouseScroll", mouseWheel, false);
两者都触发相同的函数mouseWheel
。这适用于台式机和笔记本电脑浏览器。在ipad或触摸设备上,这些事件不应该触发,因为它们是触摸滚动事件,而不是鼠标滚轮。在iPad Safari中,事件不会按预期触发。但是在iPad Chrome中,事件会触发。这是不受欢迎的行为。我该如何阻止它?
答案 0 :(得分:1)
It's not simple功能检测设备是否启用了触控功能。
正如文章建议的那样,你可以试试这个:
var hasTouch = false;
window.addEventListener('touchstart',function setHasTouch(){
hasTouch = true;
window.removeEventListener('touchstart', setHasTouch);
});
然后在执行mouseWheel函数之前检查设备是否已启用触摸:
window.addEventListener("mousewheel", mouseWheel, false);
window.addEventListener("DOMMouseScroll", mouseWheel, false);
function mouseWheel() {
if (hasTouch) return false;
// Your code
}