2014-02-08 31 views
1

在HTML的發展,我到處都看到 醜空錨調用JavaScript(我不喜歡這樣太):理由使用空鏈接調用JS,而不是其他HTML元素

<a href="#">Call some JavaScript</a> 
<a href="javascript: void(0);">Call some JavaScript</a> 
<a href="javascript:;">Call some JavaScript</a> 

我想空的聯繫是用於過去由於css:懸停在其他元素上不起作用, 和默認遊標:指針樣式。

  • 這是今天仍被認爲是最佳做法嗎?
  • 使用清理標記有什麼問題嗎?

像:

<span class="clickable">Call some javascipt</span> 
+0

空錨是不正常的,但哈希作爲href是有效的,並且錨的東西,應該點擊時會導致別的所有正確的元素之後。也就是說,你問題中的第二和第三位主播被認爲是不好的做法。如果您使用適當的事件處理程序,而不是內嵌JavaScript,則第一個就可以。 – adeneo

+0

@adeneo你能否詳細說明爲什麼第二和第三次被認爲是不正確的實踐,因爲我經常看到這一點?而且它不會將醜陋的散列添加到地址中。 – formatc

+0

當添加一個ID時,哈希是完全有效的鏈接到一個元素,沒有一個ID它只是滾動到頁面的頂部,並且在所有瀏覽器中仍然有效,所以它是一個很好的選擇,使用外部事件處理程序添加了javascript功能。對於內聯javascript,void(0)可能更好,因爲它避免了有人忘記從onclick函數返回false的問題,但由於我們根本不應該真正使用javascript內聯,所以這不是有效的一點。最佳做法是在HTML中沒有任何JavaScript,只有第一個做到這一點。 – adeneo

回答

2

有幾個原因

  1. 語義上是正確使用的錨點擊,因爲它涉及到一個動作和用於輔助功能屏幕閱讀器把它看作一個動作。
  2. 它保持默認的用戶交互,以取代鏈接樣式等
  3. 某些手機不會很好地使用span和click綁定,您會發現使用錨點分配更少的交叉設備問題。

我確實同意這是標記爲散裝,但對於可訪問性來說它非常重要。

希望幫助

+0

謝謝,很好的理由堅持與錨點。 – formatc

0

可以使用second one一樣,

<span class="clickable">Call some JavaScript</span> 

對於這一點,你必須添加css這個clickable class一樣,

.clickable { 
    cursor:pointer;/* you can use hand in place of pointer */ 
    color:blue; 
} 
.clickable:hover { 
    color:red;/* you can add more properties on hover of span */ 
} 

Live Demo

相關問題