使用 JavaScript 检查 HTML 片段是否有效

2023-12-08

我需要一个可靠的 JavaScript 库/函数来检查我可以从代码中调用的 HTML 片段是否有效。例如,它应该检查打开的标签和引号是否闭合、嵌套是否正确等。

我不希望验证失败,因为某些东西不是 100% 标准(但无论如何都会起作用)。


Update:这个答案是有限的 - 请参阅下面的编辑。

扩展@kolink的答案,我使用:

var checkHTML = function(html) {
  var doc = document.createElement('div');
  doc.innerHTML = html;
  return ( doc.innerHTML === html );
}

即,我们使用 HTML 创建一个临时 div。为此,浏览器将基于 HTML 字符串创建一棵 DOM 树,其中可能涉及结束标签等。

将 div 的 HTML 内容与原始 HTML 进行比较将告诉我们浏览器是否需要更改任何内容。

checkHTML('<a>hell<b>o</b>')

返回假。

checkHTML('<a>hell<b>o</b></a>')

返回真。

Edit:正如@Quentin 下面指出的,这是过于严格出于多种原因:浏览器通常会修复省略的结束标记,即使结束标记对于该标记来说是可选的。例如:

<p>one para
<p>second para

...被认为是有效的(因为 Ps 可以省略结束标签)但是checkHTML将返回 false。浏览器还将标准化标签大小写,并更改空白。在决定使用此方法时,您应该了解这些限制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JavaScript 检查 HTML 片段是否有效 的相关文章

  • CryptoJS 使用密码加密 AES,但 PHP 解密需要密钥

    我在用CryptoJS https code google com p crypto js AES加密字符串 function doHash msg msg String msg var passphrase aggourakia var
  • CSS 内边框?

    我纯粹用 CSS 创建了左侧的按钮 它是一个div 中的一个div 然而 右侧的三个按钮是background属性于img标签 我这样做是为了按照以下说明模拟翻转效果here http kyleschaeffer com best prac
  • JS文件中的System.register是什么意思?

    在 Angular 2 中使用指令时 JS 文件中的 System register 是什么意思 我认为这个问题并不特定于 Angular2 中的指令 它是关于 ES6 TypeScript 和其他使用 SystemJS 的现代编译器的一般
  • html 图像 src 调用 javaScript 变量

    这是我的代码 我想问 我怎样才能做到这一点 img src img apple 我一直在尝试使用 call 函数和 document onload 但它根本不起作用 有人可以救我吗 我假设你只是想用 javascript 更新图像 src
  • 有没有办法在 React 中自动播放音频而不使用 onClick 事件?

    我在尝试在 componentDidMount 中播放音频时收到此错误 未捕获 承诺中 DOMException play 失败 因为用户没有先与文档交互 componentDidMount document getElementById
  • jslint 配置 |传递全局变量

    我如何提醒 jshint 我有全局变量 即命名它们 我知道你可以做到这一点 但我不记得语法了 我在这里定义了一个全局的 function window glob1 local var 稍后像这样使用 不同的 IIFE function gl
  • 纯 JS 相当于 Jquery eq()

    jquery 的纯等价物是什么eq 例如 我怎样才能实现 class1 class2 eq 0 text 1254 在纯 JavaScript 中 要获取数组中的元素索引 可以使用 在 JavaScript 中 因此 要重现您的代码 您可以
  • vuejs 模板和 asp.net 部分视图,好的做法吗?

    我在网站中使用 Vue js 并将模板添加到 html 代码中 并将 js 代码添加到单个 js 文件中 所以我不想使用 vue Vuefy Browserfy 方法 而是稍后捆绑并缩小我的 js 文件 由于我必须使用 Asp Net MV
  • 只保留 A-Z 0-9 并使用 javascript 从字符串中删除其他字符

    我正在尝试验证字符串以使它们成为有效的网址 我只需要保留 A Z 0 9 并使用以下命令从字符串中删除其他字符javascript or jquery 例如 贝儿餐厅 我需要将其转换为 百丽餐厅 所以字符被删除 只保留 A Z a z 0
  • 使用 JavaScript 防止网页导航离开

    如何使用 JavaScript 防止网页导航离开 Using onunload允许您显示消息 但不会中断导航 因为为时已晚 然而 使用onbeforeunload将中断导航 window onbeforeunload function re
  • 如何绕过Access-Control-Allow-Origin?

    我正在一个平台上对我自己的服务器进行ajax调用 他们设置了阻止这些ajax调用的平台 但我需要它从我的服务器获取数据以显示从我的服务器数据库检索到的数据 我的 ajax 脚本正在运行 它可以将数据发送到我的服务器的 php 脚本以允许其处
  • 在“onClick”上切换 DIV 高度

    我想切换分区的高度 我尝试过将 animate 与 if else 语句一起使用 但它只会反弹 我现在使用的代码将隐藏我的分区而不是切换高度 点击时会触发 document ready function content1 toggle fu
  • 如何使用 NextJS 使用自托管字体face?

    使用 NextJS 的字体 我已经阅读了有关如何在 NextJS 中使用自托管字体的不同主题 我得到了什么 wait compiling 当我这样做时 font face font family montserrat src url myp
  • 居中

    我的问题 http i56 tinypic com ff3jmo png http i56 tinypic com ff3jmo png 项目符号点未对齐 我要做的只是 text align center ing ul 所在的类 我可以对齐
  • 为什么我的 D3 SVG 图上的轴不会更新?

    I have 简单的 D3 散点图 http www raxacoricofallapatorius com test scattertest html我在显示数据的几个不同属性之间切换 但是虽然我可以更改数据点 并按照我想要的方式进行转换
  • 此版本的 CLI 仅与 Angular 版本 5.0.0 或更高版本兼容错误

    我已经有 Angular 项目在 4 版本中运行 在安装新项目时 不幸的是我安装了 6 版本的 Angular cli 在以 4 版本运行的旧项目中运行 ngserve 命令时 这会引发错误 您的全局 Angular CLI 版本大于本地版
  • 如何将数据推送到嵌套对象

    如何将另一个元素推入variables来自以下对象的属性 var request name Name id 3 rules name Rule name tags tagId 1 variables variable var1 matchT
  • Array.of 与“[ ]”。何时使用 Array.of 而不是“[ ]”?

    当我发现时我正在读一些书Array of https developer mozilla org en docs Web JavaScript Reference Global Objects Array of 根据 MDN Array o
  • 从后面的代码添加外部 css 文件

    我有一个 CSS 文件 例如 SomeStyle css 我是否可以将此样式表文档从其代码隐藏应用到 aspx 页面 您可以将文字控件添加到标头控件中 Page Header Controls Add new System Web UI L
  • 使用
    元素作为 JavaScript 代码的输入。这是最好的方法吗?

    各位 显然 我是编码新手 所以最近完成了一些有关 HTML 和 Javascript 的 Lynda 课程后 我的简单 HTML 页面遇到了困难 基本上 我想要的是使用 JavaScript 进行基本计算 让用户使用 HTML 输入两个数字

随机推荐

  • 使用 Node.js 自动将文本写入控制台

    我需要使用 SSH 和 Node js 脚本克隆 GitHub 存储库 var exec require child process exec exec git clone email protected jquery jquery git
  • 如何仅对具有特定属性集的元素使用 querySelectorAll?

    我正在尝试使用document querySelectorAll对于所有具有value属性集 页面上还有其他复选框没有value设置 并且每个复选框的值都不同 但 ID 和名称并不唯一 例子
  • HtmlUnit 按钮单击

    我正在尝试在 www meetme com 上发送消息 但不知道该怎么做 我可以在评论区域中输入消息 但单击 发送 按钮不会执行任何操作 我究竟做错了什么 当我登录并按登录按钮时 页面确实发生了变化 一切都很好 有人有任何想法或线索吗 Ht
  • 什么是对象/关系不匹配

    我是java新手 正在阅读有关对象关系映射的内容 我在此链接上发现了术语 对象 关系不匹配 休眠 谁能用 Java 解释一下什么是对象 关系不匹配 我也读到过黑客攻击网站但无法正确获得它 用示例进行解释将是值得赞赏的 Hibernate 是
  • Heroku 应用程序坚持使用 HTTPS - 为什么?

    我有一个有趣的小问题 Heroku 上的一个应用程序被配置为使用Heroku SSL 测试版 但无论我做什么 它似乎都想使用 HTTPS 浏览器错误 I have redirect to protocol gt http status gt
  • 如何使用 oozie 安排 sqoop 操作

    我是 Oozie 的新手 只是想知道 如何使用 Oozie 安排 sqoop 作业 我知道 sqoop 操作可以添加为 Oozie 工作流程的一部分 但是我如何安排 sqoop 操作并让它每隔 2 分钟或每天晚上 8 点自动运行一次 只是一
  • JDBC-JTDS 错误?对于日期和时间 (x) 类型的列

    当我尝试从中获取列类型时ResultSetMetaData用方法getColumnTypeName对于类型date and time x 我越来越nvarchar 对于其他类型似乎效果很好 这是一个错误吗 和ResultSet getStr
  • 为什么Golang创建切片时会有CAPACITY参数

    这是一个非常简单的问题 If the capacityGolang中的一个切片的容量是可以被超出的 为什么首先要有一个容量参数呢 我认为这与内存管理 某种 知道在内存中分配切片的位置 但我不确切知道 If the capacityGolan
  • MSChart 轴线

    如何显示图表中每个条形的轴线 我只有第二个 第四个 替代文本 http img35 imageshack us img35 6106 chartiu png 我找到了答案 chartArea AxisX MajorGrid Interval
  • 控制 ggparcoord 中的颜色(来自 GGally 包)

    我正在尝试对特定 ggparcoord 图硬编码所需的线条颜色 例如 当我创建下面的 ggparcoord 图时 library GGally x data frame a runif 100 0 1 b runif 100 0 1 c r
  • Bash - 查找匹配的文件对[重复]

    这个问题在这里已经有答案了 我的文件夹中有很多文件 Filename1 mp4 Filename2 mp4 Filename3 mp4 Etc 以及许多名称添加后缀的文件 Filename1 x264 mp4 Filename2 x264
  • 脚本无法正确接收 url

    我正在使用组合的批处理和java脚本 我发现使用批处理文件从网站检索html 而我们解决的一个问题是没有返回所需的输出 就像我在firefox中使用url时出现的那样 我用来拉取 html 的脚本是 if This IsBatch then
  • 我应该如何循环遍历依赖于前一个循环值的异步函数?

    我试图在 node js 中执行的操作的同步版本 为了可读性而简化 var value null var allValues do value getValue value load the next value if value allV
  • iframe 中的在新窗口中打开链接

    我的页面上有一个 iframe 并且有一个链接 在同一域上 我想在新的物理窗口中打开 当我使用 target blank 时 它只是使用新的 iframe 重新加载页面 我还尝试了这个 JavaScript jQuery 代码 docume
  • 带有用户单击所选组件的动态选项卡

    我正在尝试设置一个选项卡系统 允许组件自行注册 带有标题 第一个选项卡就像一个收件箱 有很多操作 链接项可供用户选择 并且每次单击都应该能够在单击时实例化一个新组件 操作 链接来自 JSON 然后 实例化的组件会将其自身注册为新选项卡 我不
  • Swagger 多个示例未显示

    当我将示例添加到我的 swagger 文档中并在 swagger 编辑器上测试它时 它永远不会显示在任何地方 有人能给我一个例子 说明多个示例实际上在任何地方显示吗 Here is an example of how multiple ex
  • 我想设置每天不同时间触发的重复闹钟

    我需要每天日出时触发闹钟 我得到的日出时间是这样的 06 55 Location location new Location latitude longitude SunriseSunsetCalculator calculator new
  • 安卓:撤销权限

    再会 我正在尝试制作捕获图像然后将其显示在 gridview 中的应用程序 但是当我单击按钮开始捕获时出现此错误 Logcat java lang SecurityException Permission Denial starting I
  • 如何让所有 .py 文件通过 Spyder 启动?

    我使用 Anaconda 安装了 Spyder 并且可以使用开始菜单 Win10 中的 Spyder 图标启动 IDE 我想设置我的首选项以打开所有 py文件与 Spyder 所以我按照 Spyder 开始菜单按钮找到可执行文件 pytho
  • 使用 JavaScript 检查 HTML 片段是否有效

    我需要一个可靠的 JavaScript 库 函数来检查我可以从代码中调用的 HTML 片段是否有效 例如 它应该检查打开的标签和引号是否闭合 嵌套是否正确等 我不希望验证失败 因为某些东西不是 100 标准 但无论如何都会起作用 Updat