javascript - 如何防止从outerHTML/innerHTML 中删除双引号?

标签 javascript html

我正在使用的旧页面中有一些 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/

相关文章:

javascript - 如何在 iframe 加载网站时显示加载 gif?

javascript - 使用线性 slider 缩放图像

javascript - 使用字符串作为对象字段来引用

javascript - 如何使 Bootstrap 仅在 Div 内运行?

html - CSS 相对位置与绝对位置

javascript - 将 div 和脚本插入页面上的 iframe 中

javascript - p5.j​​s map() 动态改变变量

具有 1080 像素宽浏览器的手机的 Html/CSS

javascript - 使用文本输入值动态更改链接 href 属性

javascript - 尝试在视频之上制作视频控件