From 7ac0fc1c91f7ac7c6ee131842fdfe870697eeea7 Mon Sep 17 00:00:00 2001 From: m1ngsama Date: Sat, 27 Dec 2025 18:24:23 +0800 Subject: [PATCH] fix: Filter out script/style tags during DOM tree build Previously, script and style tags were only filtered during render, but their text content (JavaScript code) was still in the DOM tree. Now we skip these tags entirely during DOM tree construction, resulting in much cleaner output for modern websites. --- src/dom_tree.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/dom_tree.cpp b/src/dom_tree.cpp index cda8a06..0352379 100644 --- a/src/dom_tree.cpp +++ b/src/dom_tree.cpp @@ -178,6 +178,12 @@ std::unique_ptr DomTreeBuilder::convert_node( node->tag_name = gumbo_normalized_tagname(element.tag); node->element_type = map_gumbo_tag_to_element_type(element.tag); + // 跳过 script、style 等不需要渲染的标签(包括其所有子节点) + if (element.tag == GUMBO_TAG_SCRIPT || element.tag == GUMBO_TAG_STYLE || + element.tag == GUMBO_TAG_NOSCRIPT || element.tag == GUMBO_TAG_TEMPLATE) { + return nullptr; + } + // Assign current form ID to children node->form_id = g_current_form_id;