Значение функции
Значение функции будет вычислено один раз при загрузке и запомнено, или будет вычисляться каждый раз при обращении:
addEvent= window.ActiveXObject ? function(elem, even, func) {elem.attachEvent("on"+even, func)} : function(elem, even, func, bool) {elem.addEventListener(even, func, bool||false)}; ???? |
а вы-то сами как думаете?!
переменая addEvent один раз примет сво значение, и в дальнейшем, при выховах addEvent(params), будет использоватся уже вычисленное значение ф-ции |
Да, да, спасибо, уже понял))
|
Какой, однако, изощренный способ проверки, есть ли у элемента метод
.addEventListener ! |
А чем вам не нравится проверка браузера через window.ActiveXObject? Буду благодарен за совет.
|
В IE9 будет и ActiveXObject и addEventListener. Ваш способ не позволит использовать в нем addEventListener. Почему просто не проверить window.addEventListener?
|
Спасибо, Octane.
|
Слушайте, а имеет смысл делать проверку на 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}; |
Браузеров, не поддерживающих ни addEventListener, ни attachEvent, не осталось. Хотя я даже не застал момент, когда такие были :)
|
Так. Попробовал переписать функцию под 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; Но оно не работает. Почему - не могу понять, не хватает знаний... Пожалуйста, подскажите в чём ошибка. И стоит ли вообще пытаться написать функцию таким макаром? |
Часовой пояс GMT +3, время: 07:17. |