JSFiddle - React, Tailwind, and code Playground
by podgorniy
HTML
<button class="bind">bind</button>
<button class="unbind">unbind</button>
CSS
html, body{
width: 100%;
height: 100%;
}
JavaScript
//навешивание обработчика событий
function bindEvent (obj, event_name, handler) {
var handler_wrapper = function (event) {
event = event || window.event;
if (!event.target && event.srcElement) {
event.target = event.srcElement;
}
return handler.call(obj, event);
};
if (obj.addEventListener) {
obj.addEventListener(event_name, handler_wrapper, false);
} else if (obj.attachEvent) {
obj.attachEvent('on' + event_name, handler_wrapper);
}
return handler_wrapper;
}
//удаление обработчика событий
function unbindEvent (obj, event_name, handler) {
if (obj.removeEventListener) {
obj.removeEventListener(event_name, handler, false);
} else {
obj.detachEvent('on' + event_name, handler);
}
}
function sayHello() {
console.log('hello');
}
//находим кнопки
var bindBtn = document.querySelector('.bind');
var unbindBtn = document.querySelector('.unbind');
//Нативно навешиваем обработчики - всё работает
var bindedSH = bindEvent(document.body, 'mousemove', sayHello);
unbindBtn.onclick = function () {
unbindEvent(document.body, 'mousemove', bindedSH)
}