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 }); }