1. 去除HTML字符串的換行和注釋
首先測試HTML如下,放在一個自定義的script模板中:
<script id="tpl" type="text/template">
<!-- 這是注釋1 -->
<p>這是文本。</p>
<!-- 這是注釋2 -->
<ol>
<li>列表</li>
<li>列表</li>
<li>列表</li>
</ol>
</script>
我們平常為了便於閱讀,同時維護方便,HTML模板是包含縮進和注釋的,但是實際解析和這些是不需要的,需要刪除,處理字符串正則替換這種方法以外,還可以試試使用瀏覽器原生的一些DOM API方法,例如DOMParse,JavaScript代碼如下:
var htmlTpl = tpl.innerHTML;
// 字符串轉換成文檔類型
var domParser = new DOMParser();
var doc = domParser.parseFromString(htmlTpl, 'text/html');
// 使用原生的TreeWalker進行遍歷
var treeWalker = document.createTreeWalker(doc);
var arrNodeRemove = [];
// 遍歷注釋節點和換行文本節點
while(treeWalker.nextNode()) {
var node = treeWalker.currentNode;
if (node.nodeType == Node.COMMENT_NODE || (node.nodeType == Node.TEXT_NODE && node.nodeValue.trim() == '')) {
arrNodeRemove.push(node);
}
}
// 節點移除
arrNodeRemove.forEach(function (node) {
node.parentNode.removeChild(node);
});
// 字符串還原
console.log(doc.body.innerHTML);
// 輸出結果是:
// <p>這是文本。</p><ol><li>列表</li><li>列表</li><li>列表</li></ol>
