討論:A標籤要不要避免使用 javascript:void(0)

甲是個人同事,乙是我。
某天討論了要不要避免 a 標籤加 javascript: void(0),最後仍是決定加!javascript

甲:css

<a href="javascript: void(0)"> 在某些IE裏是bug。
使用 <a href="#nogo"> 更好,這樣頁面還不會跳轉到最頂端html

乙:java

使用 <a href="#nogo"> 有個問題,點擊後 windows.location 變了。這個被記錄到瀏覽器的 history 了,這樣不利於瀏覽器後退前進操做。windows

還有 <a href="#nogo"> 在 IE 下可能會在點擊後出現虛線外框,這個樣式很難看, 且無法修改。瀏覽器

鼠標在 <a href="#nogo"> 單擊中鍵時會新建瀏覽器標籤頁打開這個連接,這會誤導用戶。post

另外, <a href="#nogo"> 會讓瀏覽器腳本解析文檔搜索 nogo 錨點,這個影響雖小,但也不可取。this

暫時沒有很是完美的方案代替 javascript:void(0);spa

網上有些人是寫一個 <a> 類而後用 $('.cancel_link').click(function(){}); 之類的腳本代替。code

甲:

還有就是必須用 <a> 標籤麼? span 不行麼

http://stackoverflow.com/questions/134845/href-tag-for-javascript-links-or-javascriptvoid0

乙:

只有 a 標籤有 默認的 :hover 屬性

若是用 span 或 div 代替,就得用 js 模擬 hover,好比增長一個 hover 類: span.hover{}

也有人建議用 button 代替 a。 但 button 在某些平臺的樣式無法調整。

甲:

Simple code example

Your HTML:

<a>Cancel this action</a>

Your CSS:

a { cursor: pointer; color: blue; }
a:hover,a.hover { text-decoration: underline; }

Your JavaScript:

// Cancel click event
$('.cancel-action').click(function(){
});
// Hover shim for Internet Explorer 6 and Internet Explorer 7.
$(document.body).on('hover','a',function(){
    $(this).toggleClass('hover');
});

http://en.wikipedia.org/wiki/Unobtrusive_JavaScript

乙:

a 標籤要有 href 屬性,否則沒有 hover 也不會有默認的 cursor:pointer 樣式,這樣就得用 js 模擬。
也許 js 模擬還未生效,用戶已經點擊了連接,這樣體驗會蠻差的。
<a>連接文本<a> 這樣的標籤默認是沒有 link 樣式,在 rss 中輸出或其餘沒有 .cancel_link 樣式的地方都是顯示成文本狀態,沒人知道這個是可點擊的連接。
最保險穩妥的仍是在 a 標籤中加 href ,附上 js 。只不過會顯得有點不夠清潔。

原文連接:http://zaishanda.com/post/4

相關文章
相關標籤/搜索