JSFiddle - React, Tailwind, and code Playground
by raycn
HTML
<p id="test">
hahahahahaha
</p>
JavaScript
var addEvent = window.addEventListener ?
function(element, type, handler) {
element.addEventListener(type, handler, false);
} : function(element, type, handler) {
if(!handler.$$guid) {
handler.$$guid = addEvent.guid++;
}
if(!element.events) {
element.events = {};
}
var handlers = element.events[type];
if(!handlers) {
handlers = element.events[type] = {};
// 添加对象上已有事件处理器
if(element['on' + type]) {
handlers[0] = element['on' + type];
}
element['on' + type] = handleEvent;
}
handlers[handler.$$guid] = handler;
};
addEvent.guid = 1;
var removeEvent = window.removeEventListener ?
function(element, type, handler) {
element.removeEventListener(type, handler, false);
} : function(element, type, handler) {
delete element.events[type][handler.$$guid];
}
function handleEvent(event) {
event = event || fixEvent(window.event);
var returnValue = true;
var handlers = this.events[event.type];
for (var i in handlers) {
if(!Object.prototype[i]) {
this.$$handler = handlers[i];
if(this.$$handler(event) === false) {
returnValue = false;
}
}
}
if(this.$$handler) {
this.$$handler = null;
}
return returnValue;
}
function fixEvent(event) {
event.preventDefault = fixEvent.preventDefault;
event.stopPropagation = fixEvent.stopPropagation;
return event;
}
fixEvent.preventDefault = function() {
this.returnValue = false;
}
fixEvent.stopPropagation = function() {
this.cancelBubble = true;
}
if (!window.addEventListener) {
document.onreadystatechange = function() {
if (window.onload && window.onload != handleEvent){
addEvent(window, 'load', window.onload);
window.onload = handleEvent;
}
}
}
addEvent(document.getElementById('test'), 'click', function() { alert('test')});