diff --git a/src/browser/browser.zig b/src/browser/browser.zig index 2c5b09ff..45fc0343 100644 --- a/src/browser/browser.zig +++ b/src/browser/browser.zig @@ -152,6 +152,10 @@ pub const Session = struct { pub fn createPage(self: *Session) !*Page { std.debug.assert(self.page == null); + // Start netsurf memory arena. + // We need to init this early as JS event handlers may be registered through Runtime.evaluate before the first html doc is loaded + try parser.init(); + const page_arena = &self.browser.page_arena; _ = page_arena.reset(.{ .retain_with_limit = 1 * 1024 * 1024 }); @@ -393,9 +397,6 @@ pub const Page = struct { fn loadHTMLDoc(self: *Page, reader: anytype, charset: []const u8) !void { const arena = self.arena; - // start netsurf memory arena. - try parser.init(); - log.debug("parse html with charset {s}", .{charset}); const ccharset = try arena.dupeZ(u8, charset);