diff --git a/shared/static/scripts/sx-browser.js b/shared/static/scripts/sx-browser.js index e4eb3ae..57e6b76 100644 --- a/shared/static/scripts/sx-browser.js +++ b/shared/static/scripts/sx-browser.js @@ -14,7 +14,7 @@ // ========================================================================= var NIL = Object.freeze({ _nil: true, toString: function() { return "nil"; } }); - var SX_VERSION = "2026-03-06T21:50:58Z"; + var SX_VERSION = "2026-03-06T21:53:47Z"; function isNil(x) { return x === NIL || x === null || x === undefined; } function isSxTruthy(x) { return x !== false && !isNil(x); } @@ -1842,8 +1842,7 @@ return postSwap(target); }); var timer = NIL; var lastVal = NIL; var listenTarget = (isSxTruthy(get(mods, "from")) ? domQuery(get(mods, "from")) : el); - return (isSxTruthy(listenTarget) ? domAddListener(listenTarget, eventName, function(e) { logInfo((String("sx:bind-event fired: ") + String(eventName) + String(" on ") + String(domTagName(el)))); -return (function() { + return (isSxTruthy(listenTarget) ? domAddListener(listenTarget, eventName, function(e) { return (function() { var shouldFire = true; if (isSxTruthy(get(mods, "changed"))) { (function() { @@ -1855,6 +1854,7 @@ return (function() { var isGetLink = (isSxTruthy((eventName == "click")) && isSxTruthy((get(verbInfo, "method") == "GET")) && isSxTruthy(domHasAttr(el, "href")) && !get(mods, "delay")); var clientRouted = false; if (isSxTruthy(isGetLink)) { + logInfo((String("sx:route trying ") + String(get(verbInfo, "url")))); clientRouted = tryClientRoute(urlPathname(get(verbInfo, "url"))); } return (isSxTruthy(clientRouted) ? (browserPushState(get(verbInfo, "url")), browserScrollTo(0, 0)) : ((isSxTruthy(isGetLink) ? logInfo((String("sx:route server fetch ") + String(get(verbInfo, "url")))) : NIL), (isSxTruthy(get(mods, "delay")) ? (clearTimeout_(timer), (timer = setTimeout_(function() { return executeRequest(el, verbInfo, NIL); }, get(mods, "delay")))) : executeRequest(el, verbInfo, NIL)))); @@ -2993,7 +2993,9 @@ callExpr.push(dictGet(kwargs, k)); } } if (opts && !isNil(opts)) { if (opts.once || opts["once"]) o.once = true; } - el.addEventListener(event, fn, o); + el.addEventListener(event, function(e) { + try { fn(e); } catch (err) { console.error("[sx-ref] event handler error:", event, err); } + }, o); } // --- Validation --- diff --git a/shared/sx/ref/bootstrap_js.py b/shared/sx/ref/bootstrap_js.py index ba1fea8..d8359ce 100644 --- a/shared/sx/ref/bootstrap_js.py +++ b/shared/sx/ref/bootstrap_js.py @@ -2514,7 +2514,9 @@ PLATFORM_ORCHESTRATION_JS = """ if (opts && !isNil(opts)) { if (opts.once || opts["once"]) o.once = true; } - el.addEventListener(event, fn, o); + el.addEventListener(event, function(e) { + try { fn(e); } catch (err) { console.error("[sx-ref] event handler error:", event, err); } + }, o); } // --- Validation --- diff --git a/shared/sx/ref/orchestration.sx b/shared/sx/ref/orchestration.sx index 2c8aa55..695a4f5 100644 --- a/shared/sx/ref/orchestration.sx +++ b/shared/sx/ref/orchestration.sx @@ -373,7 +373,6 @@ (when listen-target (dom-add-listener listen-target event-name (fn (e) - (log-info (str "sx:bind-event fired: " event-name " on " (dom-tag-name el))) (let ((should-fire true)) ;; Changed modifier: skip if value unchanged (when (get mods "changed") @@ -396,6 +395,7 @@ (not (get mods "delay")))) (client-routed false)) (when is-get-link + (log-info (str "sx:route trying " (get verbInfo "url"))) (set! client-routed (try-client-route (url-pathname (get verbInfo "url"))))) (if client-routed