JSFiddle - React, Tailwind, and code Playground

by kontrach

HTML

<button class="bind">bind</button>
<button class="unbind">unbind</button>

JavaScript

function bind (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 unbind (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');

bindBtn.onclick = function(){ document.body.addEventListener('mousemove', sayHello, false); }
unbindBtn.onclick = function(){ document.body.removeEventListener('mousemove', sayHello); }
//а этот вариант не работает
bindBtn.onclick = function() {bindEvent(document.body, 'mousemove', sayHello)};
unbindBtn.onclick = function() {unbindEvent(document.body, 'mousemove', sayHello)}