2010-12-18 52 views
14

我明白,不要留下空錨標記是一個好主意。在jQuery和其他語法中,我注意到每個人通常都使用#來填補空缺(<a href='#'>anchor text</a>)。這個角色是否比其他任何東西更好或更差? (例如<a href='$'>anchor text</a>)。我沒有理由想這樣做,但似乎除了慣例之外沒有其他方式做到這一點的理由。爲什麼在空錨標籤hrefs中使用#約定?爲什麼在空錨標籤hrefs中使用#約定?

回答

16

這是因爲URL中的#字符引用本地頁面。

它用於頁面內的指定錨點(或任何ID),因此鏈接可以直接跳轉到該區域。

Wikipedia調用它的fragment identifier,並具有這樣說的:

的片段標識符,如果存在的話,則指定的一部分或整體的資源或文件內的位置。與HTTP一起使用時,它通常指定頁面內的部分或位置,並且瀏覽器可以滾動以顯示頁面的該部分。


作爲一個實際的例子 - 此鏈接維基百科有一個片段標識符(總是在URL的結尾):

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

在頁,有一個<span id="Syntax" ...標籤,並且瀏覽器直接跳轉到它。

16

這樣,如果用戶禁用了javascript,實際上跟「http://mysite.com/#」的鏈接不會有任何負面影響。

例如,這些鏈接仍然有效,因爲#當前頁面上指定的位置:

雖然這些並不:

+12

請注意,如果您使用像'#!'或類似的錨點,那麼如果JavaScript被禁用(或者如果事件中存在錯誤),則不會有滾動到頁面頂部的令人討厭的副作用監聽器,它不能返回'false'或調用'preventDefault')。 – 2010-12-18 16:30:32

+2

我從來不知道'#!'。你能解釋爲什麼這有助於不滾動到頂部? – Catfish 2012-06-28 13:36:37

1

這是防止點擊動作來觸發頁面重載的大多是老學校的方式。

如果使用href屬性就讓它空,甚至更好,如果你可以針對人們的一些後備網址與JS禁用

+0

如果您將其保留爲空,則需要在CSS中添加諸如「{cursor:pointer;}」之類的內容,以使其具有相同的行爲方式。此外,'href'是必需的HTML屬性iirc。 – 2010-12-18 16:27:54

+1

如果屬性存在但只是空的(就像我在我的回覆中所說的那樣),它確認就好,並顯示光標。 – mpenet 2010-12-18 16:33:27

3

通過<a href=點表示到別的地方鏈接AREN噸。這個地方可能位於世界的另一端(絕對URL),或本地位於相同的域/路徑(相對URL)。只留下空白就是指文檔本身。

#是用於將錨點與URL的其餘部分分開的字符。瀏覽器甚至不會將它發送到服務器,而是使用它來垂直滾動到標有該錨點的頁面中的位置(使用<a name="foo"></a>)。

因此,基本上,<a href="#">指示瀏覽器保持在同一頁面上。它通常與JavaScript一起使用 - 掛鉤到onClick事件 - 以便JavaScript有用,然後return false阻止瀏覽器實際上遵循鏈接。但是,如果他願意(例如,如果JavaScript被禁用,或者return false被省略),那麼它不會離開當前網站,通常甚至不會重新加載它。

所以#不是作爲隨機字符使用,而是因爲這實際上是指定用於表示鏈接中的錨點的字符 - 它只是發生在您的情況下,您不需要實際的鏈接(到另一個頁面)也不是錨點,而只是一個可點擊的元素。

相關問題