Sfoglia il codice sorgente

ignore SVG tags (fixes #429)

Former-commit-id: 789f388abe2dc5d18ebb72f90c22b86c4ecfe25d
Gildas 5 anni fa
parent
commit
a7a449a3ce
1 ha cambiato i file con 5 aggiunte e 5 eliminazioni
  1. 5 5
      lib/single-file/modules/html-serializer.js

+ 5 - 5
lib/single-file/modules/html-serializer.js

@@ -77,13 +77,13 @@ this.singlefile.lib.modules.serializer = this.singlefile.lib.modules.serializer
 		}
 	};
 
-	function serialize(node, compressHTML) {
+	function serialize(node, compressHTML, isSVG) {
 		if (node.nodeType == Node_TEXT_NODE) {
 			return serializeTextNode(node);
 		} else if (node.nodeType == Node_COMMENT_NODE) {
 			return serializeCommentNode(node);
 		} else if (node.nodeType == Node_ELEMENT_NODE) {
-			return serializeElement(node, compressHTML);
+			return serializeElement(node, compressHTML, isSVG);
 		}
 	}
 
@@ -107,7 +107,7 @@ this.singlefile.lib.modules.serializer = this.singlefile.lib.modules.serializer
 		return "<!--" + commentNode.textContent + "-->";
 	}
 
-	function serializeElement(element, compressHTML) {
+	function serializeElement(element, compressHTML, isSVG) {
 		const tagName = element.tagName.toLowerCase();
 		const omittedStartTag = compressHTML && OMITTED_START_TAGS.find(omittedStartTag => tagName == omittedStartTag.tagName && omittedStartTag.accept(element));
 		let content = "";
@@ -119,10 +119,10 @@ this.singlefile.lib.modules.serializer = this.singlefile.lib.modules.serializer
 		if (element.tagName == "TEMPLATE" && !element.childNodes.length) {
 			content += element.innerHTML;
 		} else {
-			Array.from(element.childNodes).forEach(childNode => content += serialize(childNode, compressHTML));
+			Array.from(element.childNodes).forEach(childNode => content += serialize(childNode, compressHTML, isSVG || tagName == "svg"));
 		}
 		const omittedEndTag = compressHTML && OMITTED_END_TAGS.find(omittedEndTag => tagName == omittedEndTag.tagName && omittedEndTag.accept(element.nextSibling, element));
-		if (!omittedEndTag && !SELF_CLOSED_TAG_NAMES.includes(tagName)) {
+		if (isSVG || (!omittedEndTag && !SELF_CLOSED_TAG_NAMES.includes(tagName))) {
 			content += "</" + tagName + ">";
 		}
 		return content;