2014-11-25 211 views
0

我有像这样2个事件监听器:鼠标滚轮事件触发iPad上的镀铬

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

两个触发相同功能mouseWheel。这在桌面和笔记本电脑浏览器上完美运行。在iPad或触摸设备上,这些事件不应触发,因为它们是触摸滚动事件,而不是鼠标滚轮。在iPad Safari中,事件不会按预期触发。但在iPad Chrome中,事件会触发。这是不想要的行为。我该如何阻止它?

回答

1

It's not simple以检测设备是否启用触摸功能。

正如文章建议,你可以试试这个:

var hasTouch = false; 

window.addEventListener('touchstart',function setHasTouch(){ 
    hasTouch = true; 
    window.removeEventListener('touchstart', setHasTouch); 
}); 

然后检查设备是否启用触摸你执行鼠标滚轮功能之前:

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

function mouseWheel() { 
    if (hasTouch) return false; 
    // Your code 
}