22
Specyfikacja obiektowego modelu dokumentu W3C DOM wprowadza nowoczesny sposób obsługi zdarzeń. Niestety model ten nie jest dostępny w przeglądarce Internet Explorer (nawet w najnowszych wersjach) i aby go wykorzystać należy dodać alternatywny sposób jego obsługi.
Funkcja dodająca zdarzenie korzysta z metody addEventListener dla przeglądarek zdognych z DOM oraz attachEvent w przypadku Interet Explorer'a:
-
function addEvent(obj, type, fn) {
-
if(obj.addEventListener){
-
obj.addEventListener(type,fn,false);
-
return true;
-
} else if(obj.attachEvent) {
-
obj['e'+type+fn] = fn;
-
obj[type+fn] = function(){obj['e'+type+fn](window.event);}
-
var r = obj.attachEvent("on"+type,obj[type+fn]);
-
return r;
-
} else {
-
return false;
-
}
-
}
Funkcja usuwająca zdarzenie korzysta z metody removeEventListener dla przeglądarek zdognych z DOM oraz detachEvent w przypadku Internet Explorer'a:
-
function removeEvent(obj,type,fn) {
-
if(obj.removeEventListener) {
-
obj.removeEventListener(type,fn,false);
-
return true;
-
} else if(obj.detachEvent) {
-
var r = obj.detachEvent('on'+type,obj[type+fn]);
-
obj[type+fn] = null;
-
return r;
-
} else {
-
return false;
-
}
-
}
Aby programowo wywołać dodane zdarzenie należy skorzystać z metody disptachEvent dla przeglądarek zgodnych z modelem DOM oraz fireEvent dla Internet Explorer'a:
-
function triggerEvent(obj, type) {
-
if(obj.dispatchEvent) {
-
var evt = document.createEvent("MouseEvents");
-
evt.initMouseEvent(type, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
-
return obj.dispatchEvent(evt);
-
} else if(obj.fireEvent) {
-
return obj.fireEvent('on'+type);
-
} else {
-
return false;
-
}
-
}
Leave a Reply
You must be logged in to post a comment.