最近我一直在阅读越来越多关于在HTML标签中使用自定义属性的人,主要是为了嵌入一些额外的数据用于javascript代码.
我希望收集一些关于是否使用自定义属性是一个好习惯的反馈,以及一些替代方案.
现在看来似乎真的可以简化既服务器端和客户端的代码,但它也不是W3C标准.
我们应该在我们的网络应用程序中使用自定义HTML属性吗?为什么或者为什么不?
对于那些认为自定义属性是好事的人:使用它们时要记住哪些事项?
对于那些认为自定义属性是坏事的人:你用什么方法来完成类似的事情?
更新: 我最感兴趣的是各种方法背后的推理,以及为什么一种方法比另一种更好的原因.我想我们都可以用4-5种不同的方式来完成同样的事情.(隐藏元素,内联脚本,额外类,从ids解析信息等).
更新2: 似乎HTML 5 data-属性功能在这里有很多支持(我倾向于同意,它看起来像一个可靠的选项).到目前为止,我还没有看到这个建议的反驳方式.使用这种方法是否有任何问题/陷阱?或者它只是对当前W3C规范的"无害"失效?
HTML(或者只是XHTML?)在标签上的非标准属性方面相对严格.如果它们不是规范的一部分,那么您的代码将被视为不符合规范.
然而,非标准属性对于将元数据传递给Javascript非常有用.例如,如果假设链接显示弹出窗口,则可以在属性中设置弹出窗口的名称:
<a href="#null" class="popup" title="See the Popup!"
popup_title="Title for My Popup">click me</a>
Run Code Online (Sandbox Code Playgroud)
或者,您可以将弹出窗口的标题存储在隐藏元素中,例如span:
<style>
.popup .title { display: none; }
</style>
<a href="#null" title="See the Popup!" class="popup">
click me
<span class="title">Title for My Popup</span>
</a>
Run Code Online (Sandbox Code Playgroud)
然而,我应该是一个优选的方法.第一种方法更简洁,我猜测,并没有像搜索引擎和屏幕阅读器一样多.相反,第二种选择使得存储大量数据更容易,因此更加通用.它也符合标准.
我很好奇这个社区的想法是什么.你怎么处理这样的情况?第一种方法的简单性是否超过潜在的缺点(如果有的话)?
如果有一行数据被更改,我有一个我想要标记的网站.如果在该行中更改了某些内容,我会使用自定义属性标记它.
<tr>
<td isDirty="true">
....row data
<td>
</tr>
Run Code Online (Sandbox Code Playgroud)
这适用于jQuery,它不会为我的页面添加太多代码.
但这是否真的是做这样的事情的正确方法,有什么缺点?
我想另一种做法就是这样,但似乎过度杀戮.
<tr>
<td>
....row data
<input id="isDirty" type="hidden" value="true" />
<td>
</tr>
Run Code Online (Sandbox Code Playgroud) 可能重复:
在JavaScript的HTML标记中存储任意信息?
使用自定义HTML属性的具体风险是什么?
自定义属性 - 是或不是?
在标准HTML元素上添加自定义属性有什么缺点?
例如:
<intput type ="textbox"id ="MyId"MyCustomeAttribute ="MyData"/>
通过添加MyCustomAttribute,我使文档无效,但实际的实现是什么?这有什么问题,如果有的话?
我将使用Javascript来读取自定义属性的值.
谢谢