我正在使用的旧页面中有一些Javascript,可读取页面的整个HTML,以便将其保存到文件中:
html = document.documentElement.outerHTML;
但是,此方法和innerHTML
替代方法都去除了一些属性值周围的双引号,导致HTML无法用于以后的处理。
例如
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
变成
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
当我“查看源代码”时,引号是正确的,那么如何使用Javascript获得正确的HTML?如果相关的话,我的开发环境是Visual Studio 2013和Internet Explorer 10(古怪模式)。
澄清:后续处理的第一步是将HTML加载到XMLDocument中。问题是由于缺少双引号,所以此操作失败。
大多数浏览器都不会这样做,并且根据HTML5 CR,即使在HTML序列化中,所有属性值在序列化中都出现在双引号中。但是IE 8和更早版本使用的序列化部分不同。根据HTML规则,结果仍然是正确的,尽管不是XHTML规则(但IE 8和更早的版本不支持XHTML-它们消化XHTML,但仅是因为它们的标记解析器是允许的)。
您可能会考虑使用将HTML转换为XHTML的后处理器。或者,您可以编写自己的函数,该函数等同outerHTML
于使用现代浏览器。序列化是在HTML5中详细定义的,因此这将相对简单。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句