在ipad chrome上触发mousewheel事件

时间:2014-11-25 12:04:16

标签: javascript ios ipad google-chrome

我有2个事件监听器,如:

window.addEventListener("mousewheel", mouseWheel, false);
window.addEventListener("DOMMouseScroll", mouseWheel, false);

两者都触发相同的函数mouseWheel。这适用于台式机和笔记本电脑浏览器。在ipad或触摸设备上,这些事件不应该触发,因为它们是触摸滚动事件,而不是鼠标滚轮。在iPad Safari中,事件不会按预期触发。但是在iPad Chrome中,事件会触发。这是不受欢迎的行为。我该如何阻止它?

1 个答案:

答案 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
}