2011-10-13 192 views
139

我已經看到不時在網頁中使用以下href。但是,我不明白這是試圖做什麼或技術。有人可以詳細說明嗎?href表達式<a href="javascript:;"></a>做什麼?

<a href="javascript:;"></a> 
+2

如果我沒有弄錯,你可以調用一個JS方法。javascript:SomeFunction() – Rob

+1

它不會嘗試做任何事情,不能用合適的點擊處理程序來處理。您應該避免這種情況,因爲它很醜,無法訪問,並導致人們使用'javascript:'方案不應該使用它('onclick =「javascript:...」') – Gareth

+1

檢查了這一點:http:// stackoverflow。 com/a/138233/908879 – ajax333221

回答

150

一個<a>元素無效HTML,除非它具有hrefname屬性。

如果您希望它作爲鏈接正確呈現(例如帶下劃線,手形指針等),則只有在具有href屬性時纔會這樣做。因此

這樣的代碼有時用作製備鏈路的方法,但不必提供在href屬性的實際URL。開發者顯然希望鏈接本身不做任何事情,而這是他知道的最簡單的方式。

他可能在其他地方有一些JavaScript事件代碼,當鏈接被點擊時觸發,這將是他想要實際發生的事情,但他希望它看起來像一個正常的<a>標記鏈接。

一些開發人員使用href='#'爲了同樣的目的,但是這會導致瀏覽器跳轉到該頁面的頂部,這可能並不希望這樣。而且他不能簡單地將href留空,因​​爲href=''是回到當前頁面的鏈接(即它導致頁面刷新)。

有辦法解決這些問題。在href中使用空位的Javascript代碼就是其中之一,雖然它不是最好的解決方案,但它確實有效。

+11

出於好奇,有沒有更好的方法來做到這一點? –

+20

一個更好的做法是,如果事件函數執行'return false;'或'event.preventDefault()',那麼'href'動作永遠不會被調用,所以你可以在那裏放一些更明智的東西。 – Spudley

-1
<a href="javascript:void(0);"></a> 

javascript:告訴瀏覽器要編寫JavaScript代碼

+1

http://stackoverflow.com/a/1293130/681538 – Alex

5
<a href="javascript:alert('Hello');"></a> 

僅僅是速記:

<a href="" onclick="alert('Hello'); return false;"></a> 
+2

一種,但它不是一個真正的「喜歡喜歡」比較。首先使用它的陷阱就是一個原因。 – Lankymart

21

基本上而不是使用鏈接到移動網頁(或錨),使用此方法啓動了一個JavaScript函數(s)

<script> 
function doSomething() { 
    alert("hello") 
} 
</script> 
<a href="javascript:doSomething();">click me</a> 

點擊鏈接將觸發警報。

21

有幾種機制可以避免鏈接到達目的地。問題中的問題並不太直觀。

清潔選項是使用href="#no"其中#no是文檔中的非定義錨點。

您可以使用更多語義名稱,如#disable或#action來提高可讀性。

該方法的優點:

  • 避免了空HREF = 「#」 中的 「移動到頂部」 效應
  • 避免了使用JavaScript的

缺點的:

  • 您必須確保文檔中未使用錨名稱。

由於<a>元素不作爲紐帶,在這些情況下,最好的選擇是不使用<a>元素,但一個<div>並提供所需的鏈接般的風格。

+6

我也喜歡非定義的錨點。然而,另一個缺點是它將錨點添加到瀏覽器歷史記錄中,所以我選擇在OP中使用空白JS方法。 –

5

請參閱本:

<a href="Http://WWW.stackoverflow.com">Link to the website opened in different tab</a> 
<a href="#MyDive">Link to the div in the page(look at the chaneged url)</a> 
<a href="javascript:;">Nothing happens if there is no javaScript to render</a> 
3

舊線程,但覺得還是補充說,之所以開發人員使用此結構是不是創造一個死鏈接,但由於某種原因JavaScript網址,不要通過引用正確地激活html元素。

例如handler_function(this.id)作爲onClick,但不作爲JavaScript網址。

因此,在編寫符合標準的迂迴代碼時,需要手動調整每個超鏈接的調用,或者可以編寫一次並在任何地方使用的稍微不標準的代碼。

0

始終正常顯示的鏈接最好的辦法是用CSS如下:

a {cursor: pointer !important} 

應該避免跟隨非必要之類的東西在線程中提到。