Javascript 检查是否可以在不添加事件侦听器的情况下添加事件侦听器

Javascript 检查是否可以在不添加事件侦听器的情况下添加事件侦听器,javascript,event-listener,Javascript,Event Listener,我想添加滚动事件侦听器或touchstart事件侦听器。最初,我使用触摸事件来停用滚动事件侦听器,如下代码所示: window.addEventListener('scroll', scrollStart, false); window.addEventListener('touchstart', touchStart, false); function scrollMenu() { // do something } function touchStart(e) { win

我想添加滚动事件侦听器或touchstart事件侦听器。最初,我使用触摸事件来停用滚动事件侦听器,如下代码所示:

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

function scrollMenu() {
    // do something
}

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

但我意识到,在某些情况下,一旦页面加载,就会触发scroll事件。因此,我不能使用上述方法。有没有其他方法可以在不添加事件的情况下检查浏览器是否支持触摸事件侦听器?

Modernizer是否解决了您的问题?有关检测触摸事件的各种方法以及每个方法的浏览器兼容性,请参见此处的示例:


现代化能解决你的问题吗?有关检测触摸事件的各种方法以及每个方法的浏览器兼容性,请参见此处的示例:

您应该能够检查
窗口中是否存在
ontouchstart
属性:

if ("ontouchstart" in window) {
    window.addEventListener('touchstart', touchStart, false);
} else {
    window.addEventListener('scroll', scrollStart, false);
}
。。。但是,我无法确认此项的x-browser属性。

您应该能够检查
窗口中是否存在
ontouchstart
属性:

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

。。。不过,我无法证实这一点。

你真的应该包括该链接中提到的检测方法的摘要;如果该页面在将来关闭,会发生什么情况?(请参阅)有许多方法,我是否需要实现全部或ontouchstart in window是唯一相关的方法?您可能应该进行浏览器检查,并使用最适合该浏览器的方法。如果您只支持一个浏览器,请使用适用于该浏览器的浏览器;如果该页面在将来关闭,会发生什么情况?(请参阅)有许多方法,我是否需要实现全部或ontouchstart in window是唯一相关的方法?您可能应该进行浏览器检查,并使用最适合该浏览器的方法。如果您只支持单一浏览器,请使用适用于该浏览器的浏览器。哇,这看起来很有希望。让我测试一下。哇,这看起来很有希望。让我测试一下。