2010-06-06 29 views
6

我一直在使用「MoinMoin」wiki軟件的新安裝。因爲我與它玩耍,大多在隨機測試頁打字,我創建了一個片段HTML文檔的URL「片段標識符」語義

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

然後我需要弄清楚如何創建錨說,「無所謂」片段標識符的鏈接。我不記得有這樣做MediaWiki的,所以我不得不挖過來,但最後我發現了MoinMoin有一個「錨」的宏:

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

在生成的HTML看,我很驚訝地看到一個空的<span>標籤的「id」值爲「無論」。我預計它會是一個<a>標籤,其「name」屬性爲「whatever」。我挖了一遍,找到了源代碼,並且有一條評論說,他們將其從<a>標記中更改,以避免<pre>部分出現一些IE問題。這使我困惑不是因爲IE的東西,而是因爲它看起來好像他們的「修復」讓整個錨機制完全破碎。

但令我驚訝的是,進一步的測試表明它工作正常。我寫了一個帶有「id」值的300 <span>標籤的測試頁面,當火狐的行爲與我預期的完全相同時,我進一步感到震驚,因爲我使用了<a>標籤。當我將所有<span>標籤更改爲<em>時,它也起作用。

所以到這個時候,你要麼像我一樣驚訝,要麼你在想「愚蠢的人怎麼能有這麼多聲望點?」如果你在第二類,是真的,我一直在鍵入HTML現在約15年現在— a lot的HTML —,它以某種方式逃脫我注意到,瀏覽器使用HTML片段找到任何類型的元素與匹配的「ID」?

心目中的地位:吹

回答

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. 

如果它的任何安慰,你並不孤單。最近有人評論我的另一個答案,說同樣的事情。

它開始與HTML 4,因此,如果您之前1998/9瞭解到你的HTML,這種變化是不是一個主要的一個相比於其他的變化,因此不容易注意到。直到2001年我纔開始學習HTML,所以HTML 4是我開始學習的地方。

+0

OK,很好,清除它!謝謝。是的,我剛剛「學習」了HTML,並且從那時起,我還沒有回去研究細節,因爲我認爲我完全理解了這些細節! – Pointy 2010-06-06 19:50:02

1

我不知道這兩種。不過,這是官方的。從HTML 4.01 spec

目的地在HTML文檔中的錨可以被指定或者由A元素(名稱屬性命名它),或通過任何其它元件(具有id屬性命名)

Wikipedia知道它太:

在HTML應用,http://www.foo.org/foo.html#bar是指與具有值欄的id屬性的元素(即,ID = 「BAR」)的文件中確定由所述URI http://www.foo.org/foo.html,這通常是通過因特網從中獲取文檔的位置。不建議使用的名稱屬性也可以以相同的方式用於此目的。