diff --git a/src/browser/Page.zig b/src/browser/Page.zig index 40b73618..a1433fbb 100644 --- a/src/browser/Page.zig +++ b/src/browser/Page.zig @@ -3045,21 +3045,25 @@ pub fn handleClick(self: *Page, target: *Node) !void { return; } + try element.focus(self); try self.scheduleNavigation(href, .{ .reason = .script, .kind = .{ .push = null }, }, .anchor); }, - .input => |input| switch (input._input_type) { - .submit => return self.submitForm(element, input.getForm(self), .{}), - else => self.window._document._active_element = element, + .input => |input| { + try element.focus(self); + if (input._input_type == .submit) { + return self.submitForm(element, input.getForm(self), .{}); + } }, .button => |button| { + try element.focus(self); if (std.mem.eql(u8, button.getType(), "submit")) { return self.submitForm(element, button.getForm(self), .{}); } }, - .select, .textarea => self.window._document._active_element = element, + .select, .textarea => try element.focus(self), else => {}, } } diff --git a/src/browser/tests/document/focus.html b/src/browser/tests/document/focus.html index 3e72e1d4..e3bfba88 100644 --- a/src/browser/tests/document/focus.html +++ b/src/browser/tests/document/focus.html @@ -88,3 +88,46 @@ testing.expectEqual(focused, document.activeElement); } + + + +