首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HTML标记上的非标准属性。是好事吗?不好的事情?你的想法是什么?

HTML标记上的非标准属性。是好事吗?不好的事情?你的想法是什么?
EN

Stack Overflow用户
提问于 2008-10-16 16:58:43
回答 8查看 21.6K关注 0票数 95

HTML (或者仅仅是XHTML?)当涉及到标记上的非标准属性时,它相对严格。如果它们不是规范的一部分,那么您的代码就被认为是不符合的。

然而,对于将元数据传递给Javascript来说,非标准属性非常有用。例如,如果链接要显示弹出窗口,您可以在属性中设置弹出窗口的名称:

代码语言:javascript
复制
<a href="#null" class="popup" title="See the Popup!" 
   popup_title="Title for My Popup">click me</a>

或者,您可以将弹出窗口的标题存储在隐藏元素中,如span:

代码语言:javascript
复制
<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>

然而,对于哪种方法应该是更好的方法,我感到困惑。第一种方法更简洁,而且我猜,它不会对搜索引擎和屏幕阅读器造成太大的影响。相反,第二种选择使存储大量数据变得更容易,因此更加通用。它也是符合标准的。

我很好奇这个社区的想法是什么。你是如何处理这种情况的?第一种方法的简单性是否超过了潜在的缺点(如果有)?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-10-16 17:00:39

我是HTML5解决方案(data-前缀属性)的铁杆粉丝。编辑:我想补充的是,对于自定义属性的使用,可能有更好的示例。例如,自定义应用程序将使用的数据在标准属性中没有类似项(例如,基于不一定能用className或id表示的东西对事件处理程序进行定制)。

票数 52
EN

Stack Overflow用户

发布于 2009-05-19 07:01:21

另一种选择是在Javascript中定义如下内容:

代码语言:javascript
复制
<script type="text/javascript">
var link_titles = {link1: "Title 1", link2: "Title 2"};
</script>

然后,您可以在稍后的Javascript代码中使用它,假设您的链接具有一个与此哈希表中的ID相对应的ID。

它没有其他两种方法的缺点:没有非标准属性,也没有丑陋的隐藏跨度。

缺点是,对于像您的示例这样简单的事情来说,这可能有点过头了。但是对于更复杂的场景,需要传递更多的数据,这是一个很好的选择。特别是考虑到数据是作为JSON传递的,所以您可以轻松地传递复杂的对象。

此外,您可以将数据与格式化分开,这对可维护性是一件好事。

你甚至可以有这样的东西(你不能用其他方法做到这一点):

代码语言:javascript
复制
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}};

..。

代码语言:javascript
复制
<a id="poi-2" href="/poi/2/">Hatsune</a>

而且,由于您很可能使用某种服务器端编程语言,因此动态生成这个哈希表应该很简单(只需将其序列化为JSON并将其显示在页面的header部分)。

票数 9
EN

Stack Overflow用户

发布于 2009-05-19 07:13:10

在这种情况下,最优解决方案是

代码语言:javascript
复制
<a href="#" alt="" title="Title of My Pop-up">click</a>

和使用标题属性。

有时,如果我真的需要的话,我会打破规范。但很少,而且只有很好的理由。

编辑:不知道为什么-1,但我指出,有时你认为你需要打破规范,当你不这样做的时候。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/209428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档