甲是個人同事,乙是我。
某天討論了要不要避免 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 。只不過會顯得有點不夠清潔。