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

bul*_*ley 14 html

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

Ode*_*ded 16

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

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

维基百科称之为fragment identifier并且有这样的说法:

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


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

http://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax
Run Code Online (Sandbox Code Playgroud)

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


Emm*_*ett 16

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

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

虽然这些不:

  • 请注意,如果你使用像`#!`之类的锚或类似的东西,如果禁用了JavaScript(或者如果事件监听器中有错误,那么你就不会有滚动到页面顶部的令人讨厌的副作用)无法返回`false`或调用`preventDefault`). (12认同)
  • 我从来不知道`#!`.你能解释为什么这有助于不滚动到顶部? (2认同)