gpt4 book ai didi

javascript - 大量 JS dom 注入(inject)/操作后的 DOM 验证

转载 作者:行者123 更新时间:2023-12-02 19:52:41 26 4
gpt4 key购买 nike

有人知道在操作和注入(inject)后验证页面 DOM 的工具吗?

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

编辑:

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

最佳答案

如果我在这里错了,有人可以纠正我,但验证是针对传递到浏览器的 HTML 文档。在解析和加载 DOM 后,您对 DOM 所做的任何操作都不会真正受到验证规则的约束。另外,无法保证某个符合 W3C 的浏览器中的 DOM 转储与另一浏览器中的相同转储相同。这就是为什么如果您检查 innerHTML在旧版本的 IE 上,您会在其中看到非验证数据,例如 <TD COLSPAN=3> ;这些东西在 W3C 标准中显然是无效的,但根据 IE 的定义,它是完全有效的。

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

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

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

然后将其加载到 XML 解析器中(任何类型都可以)。这不会捕获 HTML 问题,但会捕获嵌套和实体问题。您可能需要解决一些问题(我认为某些解析器如果看到像 <script src="..."></script> 这样的空标签,可能会发出警告)。

关于javascript - 大量 JS dom 注入(inject)/操作后的 DOM 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9074316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com