检查是否可以添加事件侦听器而不添加事件侦听器

时间:2012-07-21 09:25:40

标签: javascript event-listener

我想添加一个滚动事件监听器或一个touchstart事件监听器。最初我使用touch事件来停用滚动事件监听器,如下面的代码所示:

window.addEventListener('scroll', scrollStart, false);
window.addEventListener('touchstart', touchStart, false);

function scrollMenu() {
    // do something
}

function touchStart(e) {
    window.removeEventListener('scroll', scrollStart);
    // do something
}

但我意识到在某些情况下,只要页面加载就会触发滚动事件。因此,我不能使用上述方法。是否有另一种方法可以检查浏览器是否支持触摸事件监听器而不添加事件?

2 个答案:

答案 0 :(得分:4)

Modernizr能解决您的问题吗?请参阅此处的示例,了解检测触摸事件的各种方法以及每个浏览器的兼容性:

http://modernizr.github.com/Modernizr/touch.html

答案 1 :(得分:3)

能够检查ontouchstart中是否存在window属性:

if ("ontouchstart" in window) {
    window.addEventListener('touchstart', touchStart, false);
} else {
    window.addEventListener('scroll', scrollStart, false);
}

...虽然我无法确认x-browser-ness。