From f1deabfb14ec4d0feef5f49c6fa56d6d85a6d07a Mon Sep 17 00:00:00 2001 From: Halil Durak Date: Tue, 20 Jan 2026 19:49:15 +0300 Subject: [PATCH] `ScriptManager`: dispatch `load` events for script elements --- src/browser/ScriptManager.zig | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/browser/ScriptManager.zig b/src/browser/ScriptManager.zig index ff6d1ae0..3a40c539 100644 --- a/src/browser/ScriptManager.zig +++ b/src/browser/ScriptManager.zig @@ -851,6 +851,30 @@ pub const Script = struct { if (success) { self.executeCallback("load", local.toLocal(script_element._on_load), page); + + // Dispatch load events if required. + const event_target = script_element.asNode().asEventTarget(); + if (page._event_manager.hasListener(event_target, "load")) { + const Event = @import("webapi/Event.zig"); + + const event = Event.initTrusted("load", .{}, page) catch |err| { + log.warn(.js, "script internal callback", .{ + .url = self.url, + .type = "load", + .err = err, + }); + return; + }; + + page._event_manager.dispatch(script_element.asNode().asEventTarget(), event) catch { + log.warn(.js, "script callback", .{ + .url = self.url, + .type = "load", + }); + return; + }; + } + return; }