From 700b4daf2eda477a241896ff226bd8e76d5e4033 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Fri, 26 Jun 2026 18:46:36 +0800 Subject: [PATCH] webapi: replaceWith called with DocumentFragment should append its children --- src/browser/tests/element/replace_with.html | 62 +++++++++++++++++++++ src/browser/webapi/Element.zig | 6 ++ 2 files changed, 68 insertions(+) diff --git a/src/browser/tests/element/replace_with.html b/src/browser/tests/element/replace_with.html index 0597b9b16..23172fb93 100644 --- a/src/browser/tests/element/replace_with.html +++ b/src/browser/tests/element/replace_with.html @@ -363,3 +363,65 @@ testing.expectEqual(newChild14, parent14.firstChild); testing.expectEqual(null, oldChild14.parentNode); + + +
+
Old
+
+ + + + + diff --git a/src/browser/webapi/Element.zig b/src/browser/webapi/Element.zig index 16ebd05ae..f4c16641d 100644 --- a/src/browser/webapi/Element.zig +++ b/src/browser/webapi/Element.zig @@ -939,6 +939,12 @@ pub fn replaceWith(self: *Element, nodes: []const Node.NodeOrText, frame: *Frame continue; } + // A DocumentFragment contributes its children, not itself + if (child.is(Node.DocumentFragment)) |_| { + try frame.insertAllChildrenBefore(child, parent, ref_node); + continue; + } + if (child._parent) |current_parent| { frame.removeNode(current_parent, child, .{ .will_be_reconnected = parent_is_connected }); }