javascript - 使用 JavaScript 获取未解析的(原始)HTML

标签 javascript html

我需要获取网页中某个元素的实际 html 代码。

例如,如果元素中的实际 html 代码是 "How to fix"

运行这个 JavaScript:

getElementById('myE').innerHTML

给我 "How to fix" 这是解析后的 H​​TML。

如何使用 JavaScript 获取未解析的 "How to fix"

最佳答案

您无法获取网页部分的实际 HTML 源代码。

当您为 Web 浏览器提供 HTML 页面时,它会将 HTML 解析为一些 DOM 节点,就浏览器而言,这些节点是文档的最终版本。 DOM 保留了来自 HTML 的重要信息——比如你在单词 fix 之前使用了 Unicode 字符 U+00A0 不间断空格——但没有保留你通过实体使用它的不相关信息引用,而不仅仅是原始输入 ( )。

当您向浏览器询问元素节点的 innerHTML 时,它不会为您提供经过解析以生成该节点的原始 HTML 源代码,因为它不再具有该信息。相反,它会根据存储在 DOM 中的数据生成新的 HTML。浏览器决定如何格式化 HTML 序列化;不同的浏览器会生成不同的 HTML,并且很可能与您最初设置格式的方式不同。

特别是,

  • 元素名称可以是大写或小写;

  • 属性的顺序可能与您在 HTML 中声明的顺序不同;

  • 属性引用可能与您的来源不同。 IE 经常生成不带引号的属性,这些属性甚至不是有效的 HTML;您可以确定的是,通过将生成的 innerHTML 写入另一个元素的 innerHTML;

  • ,生成的 innerHTML 可以在同一浏览器中安全使用
  • 除字符外,它不能使用实体引用,否则无法直接包含在文本内容中:& 符号、小于号和属性值引号。它可能不会返回  ,而是简单地为您提供原始的 字符。

您可能无法看到那是一个不间断的空格,但它仍然是一个,如果您将该 HTML 插入到另一个元素中,它将充当一个。您不需要在任何地方依赖实体转义为   的不间断空格字符...如果您这样做,出于某种原因,您可以通过以下方式获得:

x= el.innerHTML.replace(/\xA0/g, ' ')

但这只是转义 U+00A0 而不是其他数千个可能的 Unicode 字符中的任何一个,所以这有点值得怀疑。

如果您真的需要获取页面的实际源 HTML,您可以对您自己的 URL (location.href) 生成一个 XMLHttpRequest 并获取完整的、未解析的responseText 中的 HTML 源代码。几乎没有理由这样做。

关于javascript - 使用 JavaScript 获取未解析的(原始)HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3905219/

相关文章:

html - 在 col 12 div 下的 Bootstrap 表格网格上添加滚动条

javascript - 如何在 JavaScript 中编写正确的 OOP 代码?

javascript - 是否可以使用 javascript 读取 something.properties ? (在 .hta 文件中)>> 读取 Selenium

javascript - 当上面的选项卡打开时,将 div 元素推到容器底部

python - 通过python脚本启动停止服务和关闭

javascript - DOM 类名称不适用于按钮

html - IE 中的电子邮件布局损坏,图像带有 colspan

html - Bootstrap CSS 用标题排列文本

javascript - 如果单元格为空,则在此单元格中插入 0

javascript - 映射 react 中的所有非空对象