diff --git a/src/browser/Page.zig b/src/browser/Page.zig index 29deac0e..a9462d1e 100644 --- a/src/browser/Page.zig +++ b/src/browser/Page.zig @@ -704,15 +704,19 @@ fn _documentIsComplete(self: *Page) !void { // Dispatch `_to_load` events before window.load. for (self._to_load.items) |element| { - const maybe_inline_listener = self.getAttrListener(element, .onload); const event = try Event.initTrusted("load", .{}, self); + // Dispatch inline event. + blk: { + const html_element = element.is(HtmlElement) orelse break :blk; - try self._event_manager.dispatchWithFunction( - element.asEventTarget(), - event, - ls.toLocal(maybe_inline_listener), - .{ .context = "Page dispatch load events" }, - ); + const listener = (try html_element.getOnLoad(self)) orelse break :blk; + ls.toLocal(listener).call(void, .{}) catch |err| { + log.warn(.event, "inline load event", .{ .element = element, .err = err }); + }; + } + + // Dispatch events registered to event manager. + try self._event_manager.dispatch(element.asEventTarget(), event); } // `_to_load` can be cleaned here.