Javascript 通过添加/删除EventListener打开/关闭文档触摸移动

Javascript 通过添加/删除EventListener打开/关闭文档触摸移动,javascript,touch,addeventlistener,dom-events,Javascript,Touch,Addeventlistener,Dom Events,我请求在手机上实现身体滚动的锁定/解锁功能,如下所示: var myObj = { disableBodyScroll: function() { document.querySelector('body').addEventListener("touchmove", function(e) { e.preventDefault(); return false; }, {passive: false} ); }, enable

我请求在手机上实现身体滚动的锁定/解锁功能,如下所示:

var myObj = {
 disableBodyScroll: function() {
    document.querySelector('body').addEventListener("touchmove", function(e) {
      e.preventDefault();
      return false;
    }, 
    {passive: false}
    ); 
  },
  enableBodyScroll: function() {
    document.querySelector('body').removeEventListener("touchmove", function(e) {
      e.preventDefault();
      return false;
    }, 
    {passive: false}
    ); 
  }
}
当我执行
myObj.disableBodyScroll()
时,它工作正常。 但是
myObj.enableBodyScroll()
它没有,并且我的滚动保持锁定状态

有什么可能的原因吗


ref:

我认为这是因为您没有传递相同的侦听器函数。您的enable和disable函数都会创建一个新的eventListener函数。因此,
removeEventListener
无法找到eventListener引用

试试这个:

var myObj = {
        handleTouchMove: function (e) {
            e.preventDefault();
            return false;
        },
        disableBodyScroll: function() {
            document.querySelector('body').addEventListener("touchmove", myObj.handleTouchMove, {passive: false}
            );
        },
        enableBodyScroll: function() {
            document.querySelector('body').removeEventListener("touchmove", myObj.handleTouchMove, {passive: false}
            );
        }
    }

stackoverflow删除了问题开头的“您好”…非常感谢,我的问题与以下内容密切相关: