01.05.2010, 23:19
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Значение функции
Значение функции будет вычислено один раз при загрузке и запомнено, или будет вычисляться каждый раз при обращении:
addEvent= window.ActiveXObject ? function(elem, even, func) {elem.attachEvent("on"+even, func)} : function(elem, even, func, bool) {elem.addEventListener(even, func, bool||false)};
????
|
|
01.05.2010, 23:41
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
а вы-то сами как думаете?!
переменая addEvent один раз примет сво значение, и в дальнейшем, при выховах addEvent(params), будет использоватся уже вычисленное значение ф-ции
|
|
01.05.2010, 23:42
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Да, да, спасибо, уже понял))
|
|
02.05.2010, 20:36
|
|
Пионэр
|
|
Регистрация: 16.11.2009
Сообщений: 1,322
|
|
Какой, однако, изощренный способ проверки, есть ли у элемента метод .addEventListener !
|
|
02.05.2010, 23:00
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
А чем вам не нравится проверка браузера через window.ActiveXObject? Буду благодарен за совет.
|
|
02.05.2010, 23:04
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
В IE9 будет и ActiveXObject и addEventListener. Ваш способ не позволит использовать в нем addEventListener. Почему просто не проверить window.addEventListener?
|
|
02.05.2010, 23:25
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Спасибо, Octane.
|
|
03.05.2010, 13:30
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Слушайте, а имеет смысл делать проверку на attachEvent? То есть вот так:
addEvent=window.addEventListener ? function(elem, even, func, bool){elem.addEventListener(even, func, bool||false)} : window.attachEvent ? function(elem, even, func){elem.attachEvent("on"+even, func)} : function(elem, even, func){elem["on"+even]=func};
|
|
03.05.2010, 13:36
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Браузеров, не поддерживающих ни addEventListener, ни attachEvent, не осталось. Хотя я даже не застал момент, когда такие были
|
|
04.05.2010, 00:41
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Так. Попробовал переписать функцию под prototype. Получилось так:
addEvent=window.addEventListener ? function(even, func, bool){this.addEventListener(even, func, bool||false)} : function(even, func){var elem=this; elem.attachEvent("on"+even, func)};
object.prototype.addEvent=addEvent;
Но оно не работает. Почему - не могу понять, не хватает знаний... Пожалуйста, подскажите в чём ошибка. И стоит ли вообще пытаться написать функцию таким макаром?
|
|
|
|