为什么空约束标签href中使用#约定?

时间:2010-12-18 16:05:02

标签: html

我知道不要留空锚标签是个好主意。在jQuery和其他语法中,我注意到每个人通常使用#来填补空白(<a href='#'>anchor text</a>)。这个角色比其他任何东西更好还是更差? (例如<a href='$'>anchor text</a>)。我没有理由想要这样做,但除了惯例之外,似乎也没有理由以其他方式做到这一点。为什么空锚标记href中使用#约定?

4 个答案:

答案 0 :(得分:16)

这是因为URL中的#字符引用了本地页面。

它用于页面中的命名锚点(或任何ID),因此链接可以直接跳转到该区域。

Wikipedia将其称为fragment identifier,并说明这一点:

  

片段标识符(如果存在)指定整个资源或文档中的部分或位置。与HTTP一起使用时,它通常指定页面中的部分或位置,浏览器可以滚动显示该部分页面。


作为一个实际的例子 - 这个维基百科的链接有一个片段标识符(总是在URL的末尾):

http://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax

在页面中,有一个<span id="Syntax" ...标记,浏览器直接跳转到它。

答案 1 :(得分:16)

这样,如果用户已禁用javascript,实际上点击链接“http://mysite.com/#”将不会产生任何负面后果。

例如,这些链接仍然有效,因为#指定了当前页面上的位置:

虽然这些没有:

答案 2 :(得分:3)

<a href=表示的链接指向其他地方。这可能在世界的另一端(绝对URL),或在同一域/路径(相对URL)本地。把它留空是指文件本身。

#是用于将锚点与URL的其余部分分开的字符。浏览器甚至不会将其发送到服务器,而是使用它垂直滚动到标有此锚点的页面中的位置(使用<a name="foo"></a>)。

基本上,<a href="#">指示浏览器保持在同一页面上。它通常与JavaScript一起使用 - 挂钩onClick事件 - 以便JavaScript执行有用的操作,然后return false以防止浏览器实际关注链接。但如果他愿意(例如,如果JavaScript被禁用,或者return false被省略)那么它就不会离开当前站点,通常甚至不会重新加载它。

所以#不是用作随机字符,而是因为它实际上是为了在链接中表示锚点而指定的字符 - 只是在你的情况下你不需要实际的链接(到另一页)也不是锚,只是一个可点击的元素。

答案 3 :(得分:1)

这主要是防止点击操作触发页面重新加载的老派方式。

如果您没有使用href属性,请将其保留为空,或者如果您可以为已禁用JS的人定位某些后备URL,则会更好