Вам необходимо определить функцию, которая обрабатывает поведение protectDefault, например:
document.addEventListener('touchmove', preventDefault, false);
function preventDefault(e) { e.preventDefault(); };
Таким образом, в дальнейшем вы можете удалить прослушиватель событий и снова включить прокрутку по умолчанию:
document.removeEventListener('touchmove', preventDefault, false);
Теперь вы можете повторно добавлять и удалять его в любое время.
Вы не можете сделать это с помощью встроенной анонимной функции, как в исходном сообщении, потому что единственный способ, которым выМожно сослаться на анонимную функцию, чтобы сначала дать ей сработать, а затем удалить ссылку на нее, например:
document.addEventListener('touchmove', function(e) {
e.preventDefault();
// some more logic...
this.removeEventListener('touchmove', arguments.callee, false);
}, false);
Очевидно, что это не тот эффект, который вы хотели бы получить.Вы также можете создать объект и сохранить ссылку на метод, который обрабатывает событие.Если вы хотите погрузиться немного глубже, я нашел эту тему полезной: Как удалитьEventListener для анонимной функции?