HTML(或者只是XHTML?)是较严格的当谈到对标签不规范的属性。 如果它们不是规范的一部分,那么你的代码被视为不符合规定。
非标属性可以是沿元数据传递到的Javascript但相当有用的。 例如,如果一个链接是假设显示弹出式窗口,您可以设置一个属性弹出窗口的名称:
<a href="#null" class="popup" title="See the Popup!"
popup_title="Title for My Popup">click me</a>
或者,你可以存储标题弹出在一个隐藏的元素,像一个跨度:
<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>
但是我撕掉了哪个应该是首选方法。 第一种方法是更简洁,我猜,与搜索引擎和屏幕阅读器尽可能不拧。 相反,第二选项使得存储大量数据更容易的,并因此,更通用。 这也是符合标准的。
我很好奇这是什么想法的社区是。 你如何处理这样的情况? 做的第一方法的简单性大于潜在的缺点(如果有的话)?
我建议的HTML 5的解决方案(一个大风扇的data-
前缀属性)。 编辑:我想补充一点,还有的使用自定义属性的可能是更好的例子。 举例来说,数据的自定义应用程序将使用在标准的属性没有模拟(如自定义事件处理程序的基础上的东西,不一定能在类名或ID来表示)。
自定义属性提供了一个便捷的方式来额外的数据携带到客户端。 Dojo Toolkit的定期这样做的,它已经指出( 揭穿Dojo Toolkit的神话 )指出:
自定义属性一直有效的HTML,他们只是在对一个DTD测试不验证。 [...] HTML规范规定,不承认任何属性是由HTML渲染引擎在用户代理忽略和Dojo可选利用了这一点,以提高开发的简易性。
另一种选择是在Javascript定义是这样的:
<script type="text/javascript">
var link_titles = {link1: "Title 1", link2: "Title 2"};
</script>
然后你可以使用这个以后在你的Javascript代码,假设你的链接有对应于该散列表中ID的ID。
它没有其他两种方法的缺点:没有不规范的属性,也不丑隐藏的范围。
缺点是,它可能有点事情就这么简单的例子矫枉过正。 但是对于比较复杂的情况,你有更多的数据传递,这是一个不错的选择。 特别是考虑到数据被作为JSON过去了,这样你就可以轻松通过复杂的对象。
另外,你把数据从格式化,这是可维护性好东西分开。
你甚至可以有这样的事情(你不能真正做到与其他方法):
var poi_types = {1: "City", 2: "Restaurant"};
var poi = {1: {lat: X, lng: Y, name: "Beijing", type: 1}, 2: {lat: A, lng: B, name: "Hatsune", type: 2}};
...
<a id="poi-2" href="/poi/2/">Hatsune</a>
既然你最有可能使用一些服务器端编程语言,这个哈希表应该是微不足道的动态生成(只是将其序列化到JSON和吐在页面的页眉部分)。
那么在这种情况下,最佳的解决方案是
<a href="#" alt="" title="Title of My Pop-up">click</a>
并使用title属性。
有时我打破了规范,如果我真的需要它。 但是很少,只有有很好的理由。
编辑:不知道为什么-1,但我指出,有时你认为你需要打破规范,当你不知道。
为什么不宣布在自定义DTD的popup_title属性? 这解决了验证问题。 我这样做是与每一个非标准的元素,属性和值,并感谢该验证,说明我的只有我的代码实际问题。 这也使得少用这样的HTML浏览器的任何错误。
你可以窝隐藏输入元素中的锚元素
<a id="anchor_id">
<input type="hidden" class="articleid" value="5">
Link text here
</a>
然后你就可以轻松地将数据输出通过
$('#anchor_id .articleid').val()
我到底的解决方案是在隐藏通过某种定界符的分离的ID标签的附加数据(一个下划线是一个空间,二是arg的)结束时,所述第二ARG有一个id:
<a href="#" class="article" id="Title_of_My_Pop-up__47">click</a>
丑陋,它假设你不是已经使用别的ID标签,但它跨越每一个浏览器兼容。
我在你的榜样个人的感觉是跨度路线是比较合适的,因为它符合XHTML规范的标准。 不过,我可以看到自定义属性的argment,但我认为他们添加混乱的水平是没有必要的。
我已经费尽我的大脑了这一点。 我喜欢的非标准属性的可读性,但我不喜欢,这将打破标准。 隐藏的跨度的例子是兼容的,但它是不是很可读。 那这个呢:
<a href="#" alt="" title="" rel="{popup_title:'Title of My Pop-up'}">click</a>
这里代码非常可读的,因为JSON的键/值对符号的。 你可以说这是只是看它属于链接的元数据。 我可以劫持“相对”属性旁边看到的唯一的缺陷是,这将变得混乱复杂的对象。 我真的很喜欢的“数据 - ”上面提到的前缀属性这一想法。 做任何当前浏览器支持呢?
这里是别的东西去思考。 影响有多大不兼容的代码对搜索引擎优化?
文章来源: Non-Standard Attributes on HTML Tags. Good Thing? Bad Thing? Your Thoughts?