diff --git a/src/browser/webapi/element/html/Image.zig b/src/browser/webapi/element/html/Image.zig
index d126e1c8..9d37c35d 100644
--- a/src/browser/webapi/element/html/Image.zig
+++ b/src/browser/webapi/element/html/Image.zig
@@ -162,17 +162,21 @@ pub const Build = struct {
const image = self.asElement();
// Exit if src not set. We might want to check if src point to valid image.
_ = image.getAttributeSafe("src") orelse return;
- // Exit if there's no `onload`.
- const on_load_str = image.getAttributeSafe("onload") orelse return;
- // Derive function from string.
- const on_load_func = page.js.stringToPersistedFunction(on_load_str) catch |err| {
- log.err(.js, "Image.onload", .{ .err = err, .str = on_load_str });
- return;
- };
- // Set onload.
- self._on_load = on_load_func;
+ // Set `onload` if provided.
+ blk: {
+ // Exit if there's no `onload`.
+ const on_load_str = image.getAttributeSafe("onload") orelse break :blk;
+ // Derive function from string.
+ const on_load_func = page.js.stringToPersistedFunction(on_load_str) catch |err| {
+ log.err(.js, "Image.onload", .{ .err = err, .str = on_load_str });
+ break :blk;
+ };
+ // Set onload.
+ self._on_load = on_load_func;
+ }
+ // Since src set, we should send dispatch operation to Scheduler.
const args = try page._factory.create(CallbackParams{
.page = page,
.element = image,
@@ -200,7 +204,7 @@ pub const Build = struct {
const event_target = _element.asEventTarget();
const event = try Event.initTrusted("load", .{}, _page);
- // If onload still there, dispatch with it.
+ // If onload provided, dispatch with it.
if (_img._on_load) |_on_load| {
var ls: js.Local.Scope = undefined;
_page.js.localScope(&ls);