可以在 DOM 元素上设置自定义属性并依赖它们持久化吗?
例如,给定
<html><body><div id="foo"></div></body></html>
这样做是否公平
document.getElementById('foo').bar = "baz";
, 并期待 document.getElementsByTagName('div')[0].bar
等于 "baz"
?请注意,我在这里谈论的是普通 javascript 对象属性中的属性,而不是元素属性。
我对它是如何跨浏览器以及它是否在任何规范中都支持感兴趣。
DOM API 是否保证每次都会为相同的 DOM 元素返回相同的 javascript 对象?
最佳答案
作为一般规则,不要使用自定义属性。您不应该以他们不期望的方式修改 DOM 对象,因为它们的行为可能不会像您认为的那样。
自定义机制属性 在 HTML5 中是使用 data-字首。
然而,HTML5 并不是一个标准,也没有得到广泛的实现。但是,如果您将 set/getAttribute 用于 data- 属性,它应该适用于所有相当现代的浏览器,并且将来不应引入带有 data- 前缀的标准属性。
但话虽如此,我仍然建议使用自定义对象来存储值并通过元素 id 或类或其他一些标准(如 HTML 4.01 中)属性值来引用它们。它避免了自定义属性和属性的问题,并且众所周知可以在任何地方工作。
关于Javascript DOM : Setting custom DOM element properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7895560/