Merge pull request #1477 from lightpanda-io/nikneym/load-event-fix
Some checks failed
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
e2e-test / browser fetch (push) Has been cancelled
zig-test / zig test using v8 in debug mode (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
e2e-integration-test / zig build release (push) Has been cancelled
e2e-integration-test / demo-integration-scripts (push) Has been cancelled

Create distinct `Event` objects for each `load` event
This commit is contained in:
Halil Durak
2026-02-05 17:01:30 +03:00
committed by GitHub

View File

@@ -698,8 +698,6 @@ pub fn documentIsComplete(self: *Page) void {
fn _documentIsComplete(self: *Page) !void { fn _documentIsComplete(self: *Page) !void {
self.document._ready_state = .complete; self.document._ready_state = .complete;
const event = try Event.initTrusted("load", .{}, self);
var ls: JS.Local.Scope = undefined; var ls: JS.Local.Scope = undefined;
self.js.localScope(&ls); self.js.localScope(&ls);
defer ls.deinit(); defer ls.deinit();
@@ -707,6 +705,7 @@ fn _documentIsComplete(self: *Page) !void {
// Dispatch `_to_load` events before window.load. // Dispatch `_to_load` events before window.load.
for (self._to_load.items) |element| { for (self._to_load.items) |element| {
const maybe_inline_listener = self.getAttrListener(element, .onload); const maybe_inline_listener = self.getAttrListener(element, .onload);
const event = try Event.initTrusted("load", .{}, self);
try self._event_manager.dispatchWithFunction( try self._event_manager.dispatchWithFunction(
element.asEventTarget(), element.asEventTarget(),
@@ -724,6 +723,7 @@ fn _documentIsComplete(self: *Page) !void {
self._to_load.clearAndFree(self.arena); self._to_load.clearAndFree(self.arena);
// Dispatch window.load event. // Dispatch window.load event.
const event = try Event.initTrusted("load", .{}, self);
// This event is weird, it's dispatched directly on the window, but // This event is weird, it's dispatched directly on the window, but
// with the document as the target. // with the document as the target.
event._target = self.document.asEventTarget(); event._target = self.document.asEventTarget();