addEventListener na obiekcie niestandardowym
Stworzyłem obiekt, który ma kilka metod. Niektóre z tych metod są asynchroniczne, dlatego chcę użyć zdarzeń, aby móc wykonywać działania, gdy metody są wykonywane. W tym celu próbowałem dodać obiekt addEventListener do obiektu.
var iSubmit = {
addEventListener: document.addEventListener || document.attachEvent,
dispatchEvent: document.dispatchEvent,
fireEvent: document.fireEvent,
//the method below is added for completeness, but is not causing the problem.
test: function(memo) {
var name = "test";
var event;
if (document.createEvent) {
event = document.createEvent("HTMLEvents");
event.initEvent(name, true, true);
} else {
event = document.createEventObject();
event.eventType = name;
}
event.eventName = name;
event.memo = memo || { };
if (document.createEvent) {
try {
document.dispatchEvent(event);
} catch (ex) {
iAlert.debug(ex, 'iPushError');
}
} else {
document.fireEvent("on" + event.eventType, event);
}
}
}
iSubmit.addEventListener("test", function(e) { console.log(e); }, false);
//This call is added to have a complete test. The errors are already triggered with the line before this one.
iSubmit.test();
Spowoduje to zwrócenie błędu:Failed to add eventlisterens: TypeError: 'addEventListener' called on an object that does not implement interface EventTarget."
Teraz ten kod zostanie użyty w aplikacji mapowania telefonu, a kiedy to zrobię, działa na systemie Android / ios. Jednak podczas testowania byłoby miło, gdybym mógł go uruchomić w co najmniej jednej przeglądarce.
PS> Wiem, że mogę włączyć bulgotanie, a następnie słuchać katalogu głównego dokumentu, ale chciałbym mieć tylko trochę OOP, gdzie każdy obiekt może działać samodzielnie.