我想註釋掉HtmlDocument中的所有腳本標記。這樣,當我渲染文檔時,腳本不會被執行,但我們仍然可以看到那裡有什麼。不幸的是,我目前的做法是失敗的:
foreach (var scriptTag in htmlDocument.DocumentNode.SelectNodes("//script"))
{
var commentedScript = new HtmlNode(HtmlNodeType.Comment, htmlDocument, 0) { InnerHtml = scriptTag.ToString() };
scriptTag.ParentNode.AppendChild(commentedScript);
scriptTag.Remove();
}
請注意,我可以使用html上的替換函數來執行此操作,但我認為它不會那麼強大:
domHtml = domHtml.Replace("<script", "<!-- <script");
domHtml = domHtml.Replace("</script>", "</script> -->");
嘗試這個:
foreach (var scriptTag in htmlDocument.DocumentNode.SelectNodes("//script"))
{
var commentedScript = HtmlTextNode.CreateNode(string.Format("<!--{0}-->", scriptTag.OuterHtml));
scriptTag.ParentNode.ReplaceChild(commentedScript, scriptTag);
}