大量 JS dom 注入/操作后的 DOM 验证

问题描述 投票:0回答:2

有谁知道有一个工具可以在操作和注入后验证页面的 DOM。

问题是我有一个非常复杂的页面,其中有一些通过 CMS 中的 js 注入的 html(遗憾的是,这并不总是很整洁),还有很多 dom 元素通过页面上的 JS UI 元素添加和删除,再加上一个加载其他 MVC 风格部分。 firebug 等倾向于自行关闭标签。我想我可以注销整个 DOM 树并将其粘贴到验证器中,但我正在寻找更优雅的东西?

编辑:

澄清一下:我有一个项目,其中 DOM 被搞乱了,但是可能有数十个,也许多达 200 个 HTML 片段是使用 MVC(骨干)模式中的 JS 模板(胡子)以及用户和 CMS 编译的输入。我正在寻找一个方便的工具,它可以在任何情况下对 DOM 进行快照,并为我提供比 Dev.Tools/Firebug 中内置的更清晰的指示

javascript html dom
2个回答
2
投票

如果我错了,有人可以纠正我,但验证是针对传递到浏览器的 HTML document 的。在解析和加载 DOM 后,您对 DOM 所做的任何操作都不会真正受到验证规则的约束。另外,无法保证某个符合 W3C 的浏览器中的 DOM 转储与另一浏览器中的相同转储相同。这就是为什么如果您在旧版 IE 上检查

innerHTML
,您会看到其中的非验证数据,例如
<TD COLSPAN=3>
;这些东西在 W3C 标准中显然是无效的,但根据 IE 的定义,它是完全有效的。

不幸的是,如果您通过 JS 将整个 HTML 块注入浏览器,那么这些内容将永远不会验证,因为它缺少所有内容(例如

<head>
<html>
)。

您可以做的一件事(我已经研究过在我们的 CMS 上做的事情,其中有很多用户生成的 HTML,这通常很糟糕)是将片段的文本加载到 XML shell 中,如下所示:

<?xml version="1.0"?>
<container>{html_string_to_validate}</container>

然后将其加载到 XML 解析器中(任何类型都可以)。这不会捕获 HTML 问题,但会捕获嵌套和实体问题。您可能需要解决一些问题(我认为某些解析器如果看到像

<script src="..."></script>
这样的空标签,可能会发出警告)。


0
投票

Total Validator商业应用程序允许您在JavaScript运行后验证DOM。您需要安装它,然后安装他们的免费浏览器扩展。然后,您只需单击要验证的任何页面上的图标,扩展程序就会将 DOM 发送到应用程序以对其进行验证。

© www.soinside.com 2019 - 2024. All rights reserved.