2011-03-08 68 views
11

我看過href="javascript:void(0)"和我見過href="javascript:;"有沒有什麼原因我不會用href="javascript:"代替?爲什麼使用`javascript:void(0)`而不是`javascript:`作爲href做什麼佔位符?

編輯:讓我說清楚:我與一個onclick結合這一點,不反對使用return false如果有必要使用替代品。當然,這隻有在替代方案比javascript:更好。

另外, 我還沒有看到我的問題(顯然我認爲)在第一段中的答案。 謝謝,大衛。 :)

我看到href="javascript:void(0)",我已經看到href="javascript:;"是否有任何理由,我不會只使用href="javascript:"呢?

+0

你多久看一次只有'http:'的網址?我懷疑這是因爲標準要求當協議或href類型被宣佈時,你需要在它之後放置一些東西! :-) – 2011-03-08 19:13:01

+3

http://stackoverflow.com/questions/134845/href-for-javascript-links-or-javascriptvoid0 - 關於同一主題,可能會有所幫助 – Bakudan 2011-03-08 19:20:36

+0

另請參閱:http://stackoverflow.com/questions/ 3666683/href-javascript-vs-href-javascriptvoid0 – Pang 2013-05-30 02:11:49

回答

8

雖然沒有回答你的問題,但可能會更多地瞭解它,但在href中使用腳本時,netscape等瀏覽器的某些早期版本出現問題。

void運營商幾乎只是強制點擊什麼都不做。

現在,在瀏覽器正確實現「僞URL」的情況下,您可以安全地使用javascript:;

+3

'javascript:''爲什麼不'javascript:'? – dhblah 2013-04-17 09:23:14

+0

我在一個新窗口中看到HTA(IE7模式)打開'href =「javascript ;;」''。 – Marc 2016-10-29 07:14:23

15

就個人而言,我會避免使用。我會有onclick='return false;',而只是設置href='#'

爲什麼?因爲如果您將Javascript代碼放入href中,則當您將鼠標懸停在鏈接上時,它就會出現在瀏覽器的狀態欄中,就像任何其他URL一樣。它看起來很亂。

事實上,因爲無論如何它將被忽略,所以你可以把你喜歡的任何URL放入href,而不僅僅是一個散列。哈希是最安全的,以防萬一你的用戶禁用Javascript,但除此之外,它可能是任何東西。

但我要指出:具有<a>標記與HREF去一個空白Javascript代碼似乎相當擊敗其擺在首位的<a>標記的點。我可以看到你希望在運行時啓用和禁用鏈接,但僅僅將href設置爲void看起來似乎毫無意義。如果它不會成爲一個真正的鏈接,爲什麼不只是有一個<span>或其他標籤。如果你必須讓它看起來像一個鏈接,那麼在CSS中做到這一點是微不足道的。

+8

散列符號旨在用作錨點,而不是用於此目的。當您以這種方式使用它時,您會不時受到不良影響,例如您的頁面跳到各處。 – RubyFanatic 2011-03-08 19:24:55

+1

@RubyFanatic - 對於它來說迂腐,哈希符號是*鏈接到錨*,但我接受你的觀點。儘管我不同意;只要啓用了Javacript,就不會產生不良影響,即使如此,跳到當前頁面的頂部也不會造成災難。此外,現在哈希符號已經被完全篡改用於Ajax功能,直到它實際上被推薦爲良好實踐,所以這樣做很難與穀物相沖突。 – Spudley 2011-03-08 19:36:36

+0

只是爲了回答你的問題:我沒有使用span,因爲它不適用於鍵盤,並且不會自動獲得CSS上的藍色/下劃線/指針。 – 2011-03-08 21:48:54

2

理想的情況是不要將任何代碼放在元素本身上,而是在腳本標記或外部文件中使用javascript,並在那裏綁定事件處理程序。

+0

是的。超鏈接上的Javascript事件綁定應該產生最易讀的代碼,並且易於維護。 – RubyFanatic 2011-03-08 19:31:21

2

最好不要使用。 href屬性指示一個URL。最好使用事件處理程序來獲得所需的行爲,這可能是onclick事件。

在這種情況下,期望的行爲顯然是無所作爲。首先,爲什麼當它不連接任何地方時使用錨標籤?其次,通過讓onclick事件處理程序返回false,可以防止事件冒泡。然後href既可以指向#,也可以指向一個或多或少具有與事件處理程序相同效果的url,因此在關閉javascript時它會優雅地退化。

+0

如果關閉JavaScript,頂部會出現一個大紅色的'noscript'警告。另外,我沒有看到狀態欄有更好的網址而不是工作JavaScript。 – 2011-03-10 16:28:04

+1

糾錯:「word」JavaScript – 2011-08-09 02:02:11

+4

@GeorgeBailey給您留下深刻印象,您在5個月後回來糾正錯字。 +1 – n0nag0n 2012-06-14 15:44:23