javascript - 有没有办法测试 html 元素是否可以接受属性?

标签 javascript html

好吧,我可以创建一个元素数组并对其进行测试,但这不太实用。

我想知道是否有办法做这样的事情:

if (el 接受 attrName) 做某事。

编辑:我指的是这个列表 https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes

最佳答案

浏览器不提供 API 来告诉您识别了哪些属性。

如果您要将要求限制为 HTML 3.2、HTML 4 或 XHTML 1,那么您可以解析 DTD 以获取每个元素支持的属性列表。例如the HTML 4.01 Strict DTD 。这需要您找到或编写一个 JavaScript DTD 解析器。

HTML 5 不提供官方的机器可读规范。您可以尝试解析 the table of data在索引中(我注意到 HTML 5 和 HTML 5.1 之间的格式发生了变化)

当然,对于 HTML 5,您还必须处理多规范问题。 W3C 发布了您可以使用的快照,并且它们很稳定,但是 WHATWG spec是“活的”,所以会不断变化。

Validator.nu 是开源的,因此您可以 use their schema ,但它遵循现行规范,并且可能会发生变化并且经常过时。

这仅涉及标准。如果您想处理浏览器实际支持的内容(鉴于它们有时会引入非标准功能,并且通常没有任何给定规范的完整实现),那么您大多不走运。您可能会成功地从 HTML 5 test 等网站读取数据。和 Can I use不过。

如果你想处理浏览器不支持的事情(即它们允许你添加到 DOM 中的属性,但会忽略任何不是你编写的寻找它们的代码的属性),那么,我知道,一切都被“接受”了。

关于javascript - 有没有办法测试 html 元素是否可以接受属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40420511/

相关文章:

html - 为什么不溢出 :hidden working in IE6?

javascript - 轻巧的替代Sammy.js

javascript - 使用 jquery 动态重置值?

javascript - 如何捕获 javascript 异常/错误? (将它们登录到服务器上)

javascript - 使用变量作为类名

html - float 变化

javascript - Jquery UI 动画没有对 float 元素应用效果

javascript - Angular2依赖注入(inject),类继承期间不注入(inject)服务

html - 在模态窗口中选择下拉框 z-index 问题

html - 如何将矩形放在中间