mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-22 04:34:44 +00:00
changes to trigger documentElements load event
This fixes the triggering issue; though the order of execution is wrong...
This commit is contained in:
@@ -698,21 +698,30 @@ 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;
|
||||||
|
|
||||||
|
// Should this be different for each?
|
||||||
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();
|
||||||
|
|
||||||
// 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);
|
if (comptime IS_DEBUG) {
|
||||||
const event = try Event.initTrusted("load", .{}, self);
|
log.debug(.page, "load event for element", .{ .element = element });
|
||||||
|
}
|
||||||
|
|
||||||
try self._event_manager.dispatchWithFunction(
|
const event = try Event.initTrusted("load", .{}, self);
|
||||||
element.asEventTarget(),
|
// Dispatch inline event.
|
||||||
event,
|
blk: {
|
||||||
ls.toLocal(maybe_inline_listener),
|
const html_element = element.is(HtmlElement) orelse break :blk;
|
||||||
.{ .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.
|
// `_to_load` can be cleaned here.
|
||||||
|
|||||||
Reference in New Issue
Block a user