最近遇到一个问题,在特定情况下希望禁用掉鼠标事件,或是手机端的touch事件,这种情况下可以使用addEventListener监听需要禁止的事件,然后使用 e.preventDefault(); 方法来阻止事件的执行。但是在另一种情况下又希望此前禁止的事件能够正常使用,所以这时候就需要用到removeEventListener,但是下面的代码无效。
if(情况1){
document.addEventListener('touchmove', function(e) {e.preventDefault(); }, false);
}
if(情况2){
document.removeEventListener('touchmove', function(e) {e.preventDefault(); }, false);
}
后来发现要把e.preventDefault();操作封装成一个单独的方法,调用时引用同一个方法,listener才能准确找到。如果直接写在参数里,会认为是两个function(e)是不同的操作,所以不能remove成功。