Fix StdEventableOjbect in lib/std.js

This commit is contained in:
Namhyeon Go 2022-09-19 05:11:55 +09:00
parent b83e2671f9
commit 6898b9fda9

View File

@ -346,10 +346,11 @@ StdEvent.CAPTURING_PHASE = 1; // Not used but to be compatible
StdEvent.AT_TARGET = 2; StdEvent.AT_TARGET = 2;
StdEvent.BUBBLING_PHASE = 3; // Not used but to be compatible StdEvent.BUBBLING_PHASE = 3; // Not used but to be compatible
function StdEventTarget() { // maybe, the "EventTarget" is preserved word
function StdEventableObject() {
this.__events__ = []; this.__events__ = [];
this.dispatchEvent = function(event) { this.dispatchEvent = function(event, __exception__) {
event.target = this; event.target = this;
event.isTrusted = false; event.isTrusted = false;
event.eventPhase = StdEvent.AT_TARGET; event.eventPhase = StdEvent.AT_TARGET;
@ -357,7 +358,11 @@ function StdEventTarget() {
for (var i = 0; i < this.__events__.length; i++) { for (var i = 0; i < this.__events__.length; i++) {
var e = this.__events__[i]; var e = this.__events__[i];
if (e.type == event.type && typeof(e.listener) === "function") { if (e.type == event.type && typeof(e.listener) === "function") {
e.listener(event); try {
e.listener(event, __exception__);
} catch (ex) {
this.dispatchEvent(new StdEvent("error"), ex);
}
} }
} }
}; };
@ -367,9 +372,9 @@ function StdEventTarget() {
this.__events__.push({ this.__events__.push({
"type": type, "type": type,
"listener": listener, "listener": listener,
"counter": StdEventTarget.__counter__ "counter": StdEventableObject.__counter__
}); });
StdEventTarget.__counter__++; StdEventableObject.__counter__++;
} else { } else {
throw new TypeError("EventListener must be a function"); throw new TypeError("EventListener must be a function");
} }
@ -388,7 +393,7 @@ function StdEventTarget() {
} }
}; };
}; };
StdEventTarget.__counter__ = 0; StdEventableObject.__counter__ = 0;
function AsyncFunction(f, _filename) { function AsyncFunction(f, _filename) {
this.f = f; this.f = f;
@ -450,12 +455,12 @@ global.splitLn = splitLn;
global.addslashes = addslashes; global.addslashes = addslashes;
global.AsyncFunction = AsyncFunction; global.AsyncFunction = AsyncFunction;
exports.VERSIONINFO = "Standard Library (std.js) version 0.7.1"; exports.VERSIONINFO = "Standard Library (std.js) version 0.7.2";
exports.global = global; exports.global = global;
exports.require = global.require; exports.require = global.require;
exports.Event = StdEvent; exports.Event = StdEvent;
exports.EventTarget = StdEventTarget; exports.EventableObject = StdEventableObject;
exports.alert = alert; exports.alert = alert;
exports.cartesian = cartesian; exports.cartesian = cartesian;