назначение события и this внутри него
объясните поведение, почему в IE this - это window?
нет, я конечно понимаю, что так даже в статье написано на сайте, но почему остальные браузеры this ставят как ссылку на объект, который и породил событие? кто тут прав? var click_event = function(e) { // В IE this - это window. Не работает в IE! alert(this.getAttribute('alt')); // А так работает везде var event = e || window.event; var target = event.target || event.srcElement; alert(target.getAttribute('alt')); } if (document.attachEvent) { element.attachEvent("onclick", click_event); } else if (document.addEventListener) { element.addEventListener("click", click_event, false); } |
if (document.addEventListener) { element.addEventListener("click", click_event, false); } else if (document.attachEvent) { element.attachEvent("onclick", function() { click_event.call(window.event.srcElement, window.event); }); } |
прикольный код. но вопрос был в том, какое из проведений в моем коде правильное. мне так, для общего развития.
|
Цитата:
|
не понимаю
![]() мне кажется как раз тут IE ведет себя правильно - он ставить this ссылкой на window. в соответствии с этой шпаргалкой.. или я что-то не понимаю? |
Цитата:
|
я понимаю. почему в функции, которая вешается на клик, в FF this устанавливается на объект, на котором произошло событие, а в IE - объект window??
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 02:12. |