Я смущен кодом в блоке if (obj.attachEvent) {...}
. Я нашел этот пример, глядя на эту страницу: http://codebits.glennjones.net/cheatsheet/javascript.htm#events
В любом случае, кто-нибудь может объяснить, что делает код? Я предполагаю, что obj
является элементом DOM, type
является типом события (например, click
или hover
), а fn
является функцией обратного вызова.
function addEvent(obj, type, fn) {
if (obj) {
if (obj.attachEvent) {
obj['e' + type + fn] = fn;
obj[type + fn] = function () { obj['e' + type + fn](window.event); };
obj.attachEvent('on' + type, obj[type + fn]);
} else {
obj.addEventListener(type, fn, false);
}
}
};
Я всегда использую следующий код для кросс-браузерного вложения событий (без jQuery). Является ли вышеуказанный подход каким-либо образом лучше, чем то, что я делаю?
function attachEvent(element, type, fn) {
if (element.addEventListener) {
element.addEventListener(type, fn, false);
} else if (element.attachEvent) {
element.attachEvent('on' + type, fn);
}
};