browser: dispatch DOMContentLoaded event

This commit is contained in:
Pierre Tachoire
2024-02-05 16:40:35 +01:00
parent 9050f2586b
commit 5aef5a21ac
2 changed files with 9 additions and 1 deletions

View File

@@ -313,10 +313,13 @@ pub const Page = struct {
// TODO wait for deferred scripts
// TODO dispatch DOMContentLoaded before the transition to "complete",
// dispatch DOMContentLoaded before the transition to "complete",
// at the point where all subresources apart from async script elements
// have loaded.
// https://html.spec.whatwg.org/#reporting-document-loading-status
const evt = try parser.eventCreate();
try parser.eventInit(evt, "DOMContentLoaded", .{ .bubbles = true, .cancelable = true });
_ = try parser.eventTargetDispatchEvent(parser.toEventTarget(parser.DocumentHTML, html_doc), evt);
// eval async scripts.
for (sasync.items) |e| {

View File

@@ -477,6 +477,11 @@ fn eventTargetVtable(et: *EventTarget) c.dom_event_target_vtable {
return getVtable(c.dom_event_target_vtable, EventTarget, et);
}
pub inline fn toEventTarget(comptime T: type, v: *T) *EventTarget {
const node_aligned: *align(@alignOf(NodeExternal)) T = @alignCast(v);
return @as(*EventTarget, @ptrCast(node_aligned));
}
pub fn eventTargetHasListener(
et: *EventTarget,
typ: []const u8,