2012-11-15 35 views
0

在过去我见过使用锚点元素指定锚点的示例,以及idname属性(with id taking precedence)。我是否应该使用锚点元素指定锚点?

但是,在可访问性/跨浏览器支持方面,为什么我应该在任何其他元素上使用锚点元素有什么特别的原因?

比如我可以一个URL http://domain.com/page.htm#faq与下面的标记:

<a id="faq"></a> 
<h1>Frequently Asked Questions</h1> 

这可以简化为:

<h1 id="faq">Frequently Asked Questions</h1> 

是否有使用第二个标记任何伤害?为什么开发者更喜欢空锚而不是将id附加到更相关的元素上,是否有特定的原因?

+0

我已经_never_使用第一种方法。我没有看到第二个问题,我一直都在使用它。可能是过去的残余。 –

+0

@基督教 - 你太年轻了,不记得;)的确,过去的残余。 – Oded

回答

3

是否有任何特殊的原因,为什么我应该在任何其他元素上使用锚点元素,就可访问性/跨浏览器支持而言?

不,不是。

从历史上看(HTML 4之前),命名锚是页面定位的唯一方法。

使用第二个标记有什么危害吗?

这是推荐的方式 - 这就是你应该怎么做。

为什么开发人员更喜欢空锚而不是附加id到更相关的元素?

唯一欠缺的学习和适应变化的;)

+0

+1感谢Oded,这让我放心继续使用第二种方法,而不必担心我阻止了x%的用户! – Curt

+0

@Curt - 只有那些使用Mozilla 3,IE 3.02等等;) – Oded

+0

哈,好吧,我非常乐意阻止它们! – Curt

0

这是确定编写代码。有两点使用第一码:

  1. 历史原因。

  2. HtmlHelpers在任何html驱动器,如剃刀。例如,它看起来不错,我用这样的:

    public static MvcHtmlString Anchor<TModel>(this HtmlHelper<TModel> htmlHelper, string anchorId) 
    { 
        var tag = new TagBuilder("a"); 
        tag.Attributes.Add("id", anchorId); 
        return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal)); 
    } 
    

在我的MVC项目。