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