我正在使用的旧页面中有一些 Javascript,可以读取页面的整个 HTML,以便可以将其保存到文件中:
html = document.documentElement.outerHTML;
然而,这个和 innerHTML
替代方案都去掉了一些属性值周围的双引号,导致我无法将其用于以后的处理。
例如
<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 中详细定义,因此相对简单。
关于javascript - 如何防止从outerHTML/innerHTML 中删除双引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21184041/