HTML文档的URL“片段标识符”语义

时间:2010-06-06 19:21:24

标签: html url

我一直在使用“MoinMoin”wiki软件的新安装。当我正在玩它时,输入大多数随机测试页面,我创建了一个带有片段的链接

blah blah see also [[SomeStuff#whatever|some other stuff about whatever]]

然后我需要弄清楚如何为那个“无论什么”的片段标识符创建锚点。我不记得必须用MediaWiki这样做,所以我不得不四处寻找,但最后我发现MoinMoin有一个“Anchor”宏:

== Whatever ==
<<Anchor(whatever)>>

查看生成的HTML,我很惊讶地看到一个空的<span>标签,其“id”值为“whatever”。我希望它是一个<a>标签,其“name”属性为“whatever”。我挖了一下并找到了源代码,并且有评论说他们从<a>标签更改了它,以避免<pre>部分出现IE问题。这让我感到困惑 - 不是因为IE的事情,而是因为它看起来好像他们的“修复”让整个锚机制彻底破坏了。

然而,令我惊讶的是,进一步的测试表明它运作良好。我写了一个包含300个<span>标签的测试页,所有标签都带有“id”值,当Firefox表现完全像我预期的那样使用<a>标签时,我进一步震惊了自己。当我将所有<span>代码更改为<em>时,它也有效。

所以到了这个时候,你要么像我一样惊讶,否则你在想“愚蠢的人怎么会有这么多的声望点呢?”如果你属于第二类,我是否真的已经打了大约15年的HTML了 - 一个很多的HTML - 而且它在某种程度上让我注意到浏览器使用的用于查找任何类型匹配“id”的元素的HTML片段?

心态:吹

2 个答案:

答案 0 :(得分:4)

HTML 4.01非常清楚......

12.2.3 Anchors with the id attribute

The id attribute may be used to create an anchor at the start tag of any element
(including the A element).

This example illustrates the use of the id attribute to position an anchor in an 
H2 element. The anchor is linked to via the A element.

You may read more about this in <A href="#section2">Section Two</A>.
...later in the document
<H2 id="section2">Section Two</H2>
...later in the document
<P>Please refer to <A href="#section2">Section Two</A> above
for more details.

如果有任何安慰,你并不孤单。最近有人在SO上评论了我的另一个答案,并说了同样的话。

它始于HTML 4,因此如果您在1998/9之前学习了HTML,那么与其他更改相比,更改并不是主要的,因此不是最容易注意的事项。直到2001年我才开始学习HTML,所以HTML 4就是我开始学习的地方。

答案 1 :(得分:1)

我也不知道。不过这是正式的。来自HTML 4.01 spec

  

HTML文档中的目标锚点可以由A元素(使用name属性命名),或任何其他元素(使用id属性命名)指定。

Wikipedia也知道:

  

在HTML应用程序中,http://www.foo.org/foo.html#bar引用具有id属性的元素,该属性在由URI http://www.foo.org/foo.html标识的文档中具有值bar(即id =“bar”),这通常是通过互联网获取文件的位置。不推荐使用的name属性也可以相同的方式用于此目的。