Привязать пользовательское событие к объекту JavaScript? - PullRequest
2 голосов
/ 01 апреля 2011

Я не могу понять, как это сделать. Казалось бы, что-то вроде этого:

function MyObject() {
    this.fireEvent("myEvent");
}

А затем в отдельном файле JavaScript:

var obj = new MyObject();
obj.addEventListener("myEvent", function() {
    alert("Event Fired");
});

Но, конечно, это не работает. Мой вопрос: как бы я поступил так?

1 Ответ

4 голосов
/ 01 апреля 2011

В вашем примере вы запускаете событие непосредственно в конструкторе (до того, как подключится прослушиватель событий). Попробуйте переместить логику стрельбы в отдельную функцию.

Обновление

Кроме того, похоже, что вы не запускаете событие должным образом. См. эту статью для получения дополнительной информации о том, как правильно запускать события в кросс-браузерном режиме Из этой статьи:

function fireEvent(element,event){
    if (document.createEventObject){
        // dispatch for IE
        var evt = document.createEventObject();
        return element.fireEvent('on'+event,evt)
    }
    else{
        // dispatch for firefox + others
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true ); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...