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)
}