最近我一直在阅读越来越多关于在HTML标签中使用自定义属性的人,主要是为了嵌入一些额外的数据用于javascript代码.
我希望收集一些关于是否使用自定义属性是一个好习惯的反馈,以及一些替代方案.
现在看来似乎真的可以简化既服务器端和客户端的代码,但它也不是W3C标准.
我们应该在我们的网络应用程序中使用自定义HTML属性吗?为什么或者为什么不?
对于那些认为自定义属性是好事的人:使用它们时要记住哪些事项?
对于那些认为自定义属性是坏事的人:你用什么方法来完成类似的事情?
更新: 我最感兴趣的是各种方法背后的推理,以及为什么一种方法比另一种更好的原因.我想我们都可以用4-5种不同的方式来完成同样的事情.(隐藏元素,内联脚本,额外类,从ids解析信息等).
更新2: 似乎HTML 5 data-属性功能在这里有很多支持(我倾向于同意,它看起来像一个可靠的选项).到目前为止,我还没有看到这个建议的反驳方式.使用这种方法是否有任何问题/陷阱?或者它只是对当前W3C规范的"无害"失效?
这个话题在办公室变成了激烈的讨论,所以我很想知道你的想法.
我们正在开发一个仅针对某些特定浏览器的网络应用.这些浏览器目前包括不同风格的Opera 9和Mozilla 1.7.12.在未来,我们可能还需要支持Opera 10和不同版本的WebKit.但我们不太可能不得不处理任何版本的IE.
我们的网络应用程序在其doctype中声明HTML 4.0严格.
最近,我提出了在HTML中使用自定义属性作为特定问题的解决方案.我提出了一些看起来像这样的东西:
<span translationkey="someKey">...</span>
Run Code Online (Sandbox Code Playgroud)
由于这不是有效的HTML 4,它与我们的HTML人员并没有很好地相关,我们陷入了争论.
我的问题是:如果有的话 - 使用自定义属性的风险是什么?我知道页面不会验证,但是并非所有浏览器都忽略了他们不知道的属性?或者可以想象一些浏览器会改为"quirks模式"并将页面呈现为严格的HTML 4.0之外的其他内容?
更新:
Hilited提出的实际问题.
一个非常普遍的问题.
我正在动态生成一个表单,该表单使用HTML/JavaScript分成多个级别的选项卡.
我想使用CSS和background-image突出显示某些字段(具有与全局模板不同的值的字段)和星号*符号.
JS字段遍历每个字段,比较其值,并在必要时为其设置CSS类.到现在为止还挺好.
此外,我不仅希望每个更改的字段都标有星号,还要标记它所在的选项卡.
因为我喜欢它简单,我想将选项卡的元素ID存储为每个字段的HTML标记中的某个属性(类似"parentTab").JS函数然后突出显示该字段及其"parentTab"元素(也可能是那个"parentTab").
我的第一种方法是滥用"title"属性或somethiong来存储parentTab.当然,这很脏.但是,如果我只是将任意属性添加到DIV或INPUT标记中,它将不再验证,我觉得访问这些属性的安全性不足 - 谁知道不同的浏览器如何处理它,并将来会处理它?
所以我的问题是:是否有一种有效的,符合标准的方式 - 某种属性 - 将任意数据存储在HTML标记内,以便通过JavaScript进一步处理?
当然,我可以创建一个"parentTabs"JS数组并完成它.但是将它存储在输入本身会更加优雅.