From 57aa267f240d79065f5a4df3c748be7d440ff0ea Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Thu, 20 Nov 2025 21:46:28 +0800 Subject: [PATCH] iframe.contentWindow --- src/browser/Page.zig | 6 ++++++ src/browser/webapi/element/html/IFrame.zig | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/src/browser/Page.zig b/src/browser/Page.zig index 079e4006..77da5acc 100644 --- a/src/browser/Page.zig +++ b/src/browser/Page.zig @@ -1134,6 +1134,12 @@ pub fn createElement(self: *Page, ns_: ?[]const u8, name: []const u8, attribute_ attribute_iterator, .{ ._proto = undefined }, ), + asUint("iframe") => return self.createHtmlElementT( + Element.Html.IFrame, + namespace, + attribute_iterator, + .{ ._proto = undefined }, + ), else => {}, }, 8 => switch (@as(u64, @bitCast(name[0..8].*))) { diff --git a/src/browser/webapi/element/html/IFrame.zig b/src/browser/webapi/element/html/IFrame.zig index b0830063..4aa65df0 100644 --- a/src/browser/webapi/element/html/IFrame.zig +++ b/src/browser/webapi/element/html/IFrame.zig @@ -17,6 +17,8 @@ // along with this program. If not, see . const js = @import("../../../js/js.zig"); +const Page = @import("../../../Page.zig"); +const Window = @import("../../Window.zig"); const Node = @import("../../Node.zig"); const Element = @import("../../Element.zig"); const HtmlElement = @import("../Html.zig"); @@ -31,6 +33,10 @@ pub fn asNode(self: *IFrame) *Node { return self.asElement().asNode(); } +pub fn getContentWindow(_: *const IFrame, page: *Page) *Window { + return page.window; +} + pub const JsApi = struct { pub const bridge = js.Bridge(IFrame); @@ -39,4 +45,6 @@ pub const JsApi = struct { pub const prototype_chain = bridge.prototypeChain(); pub var class_id: bridge.ClassId = undefined; }; + + pub const contentWindow = bridge.accessor(IFrame.getContentWindow, null, .{}); };