Как я создаю пользовательский класс событий, подобный ActionScript? Под чем я подразумеваю, который является классом, который я могу использовать, чтобы исчерпать мои собственные события, отправить необходимые данные.
Я не хочу пользоваться сторонними библиотеками как YUI или jQuery, чтобы сделать это. Моя цель состоит в том, чтобы быть в состоянии отправить событие, которое похоже на это.
document.addEventListener("customEvent", eventHandler, false);
function eventHandler(e){
alert(e.para1);
}
document.dispatchEvent(new CustomEvent("customEvent", para1, para2));
Никакие сторонние решения библиотеки.
На самом деле не так сложно - не так много определений событий, только три версии. Первый - The Corect One ( addeventListener
), то есть способ IE ( Attavent
), а затем есть способ совместимости для более старого браузера ( Element.onevent = функция
)
Так что полное решение для обработки событий будет выглядеть что-то подобное:
setEvent = function(element, eventName, handler){
if('addEventListener' in element){
//W3
element.addEventListener(eventName,handler,false);
}else if('attachEvent' in elm){
//IE
elm.attachEvent('on'+eventName,handler)
}else{
// compatibility
elm['on'+eventName] = handler;
}
}
и очистить события:
clearEvent = function(element, eventName, handler){
if('removeEventListener' in element){
//W3
element.removeEventListener(eventName,handler,false);
}else if('detachEvent' in elm){
//IE
elm.detachEvent('on'+eventName,handler)
}else{
// compatibility
elm['on'+eventName] = null;
}
}
и пример:
setEvent(document, "click", function(){alert('hello world!');});
clearEvent(document, "click", function(){alert('hello world!');});
Это не совсем полный пример, хотя, поскольку обработчик совместимости всегда перезаписывается Предыдущие события (он не добавляет действия, он перезаписывает), чтобы вы, вероятно, хотели бы проверить, установлен ли обработчик, а затем сохранить его в некоторую временную переменную и пожарить его внутри функции обработчика событий.