Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Обработка событий в ИЕ 6 - 8 (https://javascript.ru/forum/css-html-internet-explorer/24179-obrabotka-sobytijj-v-ie-6-8-a.html)

HamsterCoder 20.12.2011 16:16

Обработка событий в ИЕ 6 - 8
 
Доброго времени суток =)

Если открыть любую книгу или описание по JS вы увидите следующую фразу, что в ИЕ объект события не передаётся в обработчик события.

Тем не менее на удивление данный код работает и работает правильно в ИЕ 6 7 8 (6 под XP на виртуалке стоит)

function addEvent(elem, eventType, eventHandler)
			{
				if(elem.addEventListener)
				{
					elem.addEventListener(eventType, eventHandler, false);
				}
				else if(elem.attachEvent)
				{
					elem.attachEvent('on'+eventType, eventHandler);
				}
			}

addEvent(document.body, 'click', onBodyClick );

function onBodyClick(someArg)
			{
				//someArg= someArg|| window.event; 
alert(someArg); //[object - Event] or [object] or [object - MouseEvent]
				if(someArg.target == document.body || someArg.srcElement == document.body)
					alert('Body clicked');
			}


Говорят, что браузер передаёт копию текущего объекта window.event
Также говорят, что на MSDN вразумительного объяснения или документации нет

Вот заметка автора книги The Definitive Javascript Guide

http://www.davidflanagan.com/2006/10...tachevent.html

Хотелось бы докопаться до истины =) В том смысле, что когда только начинаешь писать на JS страшно использовать непонятные конструкции.
Может кто сходу может описать возможные проблему использования это способа обработки события в ИЕ


Часовой пояс GMT +3, время: 22:00.