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); diff --git a/src/cdp/testing.zig b/src/cdp/testing.zig index 94897339..7ae4212f 100644 --- a/src/cdp/testing.zig +++ b/src/cdp/testing.zig @@ -121,7 +121,6 @@ const TestContext = struct { if (opts.html) |html| { if (bc.session_id == null) bc.session_id = "SID-X"; parser.deinit(); - try parser.init(); const page = try bc.session.createPage(); page.doc = (try Document.init(html)).doc; }