Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.06.2015, 00:01
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

интересно поведения addEventListener
var o = {
age: 22,
fn: function (e) {
	console.log(this) 
// сейчас this ссылается элемент DOM! 
	console.log(e.target)
}
}
document.getElementById('div').addEventListener('click', o.fn, false);


var o = {
age: 22,
handleEvent: function (e) {
//но только меняем названия метода и происходит магия !
	console.log(this.age)
	console.log(e.target)
}
}
document.getElementById('div').addEventListener('click', o, false);



Кто не удивился объясните что там происходит , а то только одни догадки.
о handleEvent нахожу все по англ (((

Последний раз редактировалось caetus, 12.06.2015 в 00:09.
Ответить с цитированием
  #2 (permalink)  
Старый 12.06.2015, 00:33
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

Разобрался как он работает ! если в addEventListener вместо функции передать object то он начинает искать метод handleEvent. С помощью handleEvent можно легко навешивать кучу событий на 1 элемент .
Пример взят с http://www.thecssninja.com/javascript/handleevent
var obj  =  {
    init: function() {
        document.getElementById("btn").addEventListener("click", this, false);
        document.getElementById("btn").addEventListener("touchstart", this, false);
    },
    handleEvent: function(e) {
        switch(e.type) {
            case "click":
                this.button();
                break;
            case "touchstart":
                this.button();
                break;
        }
    },
    dude: "holla",
    button: function() {
        alert(this.dude);
    }
};

obj.init();

Последний раз редактировалось caetus, 12.06.2015 в 00:37.
Ответить с цитированием
  #3 (permalink)  
Старый 12.06.2015, 00:59
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

caetus, прикольно, не знал о таком
Ответить с цитированием
  #4 (permalink)  
Старый 12.06.2015, 01:11
Новичок на форуме
Посмотреть профиль Найти все сообщения от vkontaktikapi
 
Регистрация: 11.06.2015
Сообщений: 8

Сообщение от caetus
объясните что там происходит
Примерно это(lite - версия)
<html>
<head>
</head>
<body>

<div id="div1">div with function handler</div>
<div id="div2">div with object handler</div>

<script>



HTMLDivElement.prototype.addEventListener2=function(event, handler){
  if(typeof handler==="function") this["on"+event]=handler
  if(typeof handler==="object") this["on"+event]=function(){handler.handleEvent.call(handler)}
}




handler={
 age: 22,
 handleEvent: function(){alert(this.age)}
}

div1.age=100
div1.addEventListener2("click", handler.handleEvent)
div2.addEventListener2("click", handler)





</script>

</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 12.06.2015, 01:18
Новичок на форуме
Посмотреть профиль Найти все сообщения от vkontaktikapi
 
Регистрация: 11.06.2015
Сообщений: 8

Сообщение от caetus
можно легко навешивать кучу событий на 1 элемент
Ты хотел сказать кучу обработчиков (судя по примеру). Это и так можно делать, и с addEventListener, и без него.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
addEventListener в iFrame Dimasick Events/DOM/Window 1 28.06.2014 18:43
Расширение функциональности метода addEventListener Nikola Flamel Events/DOM/Window 2 14.11.2013 16:22
addEventListener и return false; Valdemor Общие вопросы Javascript 4 17.07.2013 11:33
Интересно знать andrey888 Javascript под браузер 4 27.06.2012 13:01
addEventListener фаза mycoding Общие вопросы Javascript 2 31.01.2010 13:52