У меня есть блок кода, основанный на прототипе с простым JavaScript.Я ожидаю, чтобы отключить весь код, пока он не будет сделан для чтения.
Например, если я вызову событие touchstart
, то событие будет отключено во время выполнения кода.
Поэтому я добавил функцию removeEventListener()
in start
вудалить событие для тестирования, но консоль по-прежнему появляется каждый раз, когда я касаюсь или проводя по элементу следующим образом:
'use strict';
(function() {
function Proto(elem) {
this.elem = elem;
this.active = false;
this.count = 1;
this.elem.addEventListener('touchstart', (e) => this.start(e));
this.elem.addEventListener('touchmove', (e) => this.move(e));
this.elem.addEventListener('touchend', (e) => this.end(e));
};
Proto.prototype = {
start: function(e) {
console.log('test');
e.currentTarget.removeEventListener("touchStart", this.start);
},
move: function(e) { },
end: function(e) { this.create(this.timeout); },
create: function(callback) {
let binding = callback.bind(this);
console.log('function create() & waiting .4 second . . .');
setTimeout(binding, 400, this.trans);
},
timeout: function(callback) {
let binding2 = callback.bind(this);
console.log('function timeout() & waiting 1 second . . .');
this.elem.classList.add('trans');
this.elem.style.left = 90 + 'px';
setTimeout(binding2, 1000);
},
trans: function() {
this.elem.style.left = 100 + 'px';
console.log('function trans()');
}
}
let _elem = document.querySelector('.contents');
const proProto = new Proto(_elem);
}());
* {
margin: 0;
padding: 0;
}
.contents {
position: absolute;
left: 100px;
width: 100px;
height: 100px;
border: 1px solid black;
}
.trans {
transition: left 1000ms;
}
<div class="contents">
some contents
</div>
Я искал эту тему в Google и здесь, но не смог найти никакой информации, кроме этой статьи.
Есть ли способы остановить или отключить событие во время выполнения кода?