diff --git a/src/browser/tests/domparser.html b/src/browser/tests/domparser.html index 24d34e89..7930ec87 100644 --- a/src/browser/tests/domparser.html +++ b/src/browser/tests/domparser.html @@ -397,3 +397,25 @@ } } + + diff --git a/src/browser/webapi/collections/node_live.zig b/src/browser/webapi/collections/node_live.zig index 65fdfbf7..a55420e7 100644 --- a/src/browser/webapi/collections/node_live.zig +++ b/src/browser/webapi/collections/node_live.zig @@ -219,7 +219,14 @@ pub fn NodeLive(comptime mode: Mode) type { switch (mode) { .tag => { const el = node.is(Element) orelse return false; - return el.getTag() == self._filter; + // For HTML namespace elements, we can use the optimized tag comparison. + // For other namespaces (XML, SVG custom elements, etc.), fall back to string comparison. + if (el._namespace == .html) { + return el.getTag() == self._filter; + } + // For non-HTML elements, compare by tag name string + const element_tag = el.getTagNameLower(); + return std.mem.eql(u8, element_tag, @tagName(self._filter)); }, .tag_name => { // If we're in `tag_name` mode, then the tag_name isn't