Kue*_*per 3 javascript html-agility-pack
我正在使用Html Agility Pack在我的文档头部输出一些javascript.但在将文档保存到文件系统后,我发现javascript源已被修改.我想这是因为HAP正在尝试验证我的脚本.有可能阻止这种情况吗?如下所示,我已尝试设置不同的选项.
我的代码使用HAP:
var htmlDoc = new HtmlDocument();
htmlDoc.OptionCheckSyntax = false;
htmlDoc.OptionAutoCloseOnEnd = false;
htmlDoc.OptionFixNestedTags = false;
htmlDoc.LoadHtml(htmlContent);
HtmlNode headNode = htmlDoc.DocumentNode.SelectSingleNode("//head");
headNode.AddScriptNode(htmlDoc, "../../Scripts/jquery-1.7.1.min.js");
Run Code Online (Sandbox Code Playgroud)
用于添加脚本标记的扩展方法
public static void AddScriptNode(this HtmlNode headNode, HtmlDocument htmlDoc, string filePath)
{
string content = "";
using (StreamReader rdr = File.OpenText(filePath))
{
content = rdr.ReadToEnd();
}
if(headNode != null)
{
HtmlNode scripts = htmlDoc.CreateElement("script");
scripts.Attributes.Add("type", "text/javascript");
scripts.InnerHtml = "\n" + content + "\n";
headNode.AppendChild(scripts);
}
}
Run Code Online (Sandbox Code Playgroud)
我的假设:当使用scripts.InnerHtmlAgilityPack尝试将内容解析为HTML时.因此,如果有标签,那么它们将被转换为HTML节点.
为避免这种情况,您应该设置<script>as文本的内容.不幸的是,HtmlNode.InnerText属性是只读的,但有一个解决方法.您只需向节点添加一个文本(注释节点将是首选的)<script>节点:
if(headNode != null)
{
HtmlNode scripts = htmlDoc.CreateElement("script");
scripts.Attributes.Add("type", "text/javascript");
scripts.AppendChild(htmlDoc.CreateComment("\n" + content + "\n"));
headNode.AppendChild(scripts);
}
Run Code Online (Sandbox Code Playgroud)
在这里你的脚本的身体会被添加为注释节点(<!--和-->将被添加).
| 归档时间: |
|
| 查看次数: |
1621 次 |
| 最近记录: |