1. 程式人生 > >href='#' 和 href='###' 的區別以及優缺點

href='#' 和 href='###' 的區別以及優缺點

首先,a 標籤 + onclick=’{jscode}’ 是很常用的一種 js 運用方式,而不使用 href=’javascript:{jscode}’ 是為了相容多種瀏覽器對 a標籤的解釋和處理不同。其次,使用 a 標籤 + onclick=’{jscode}’ 時經常會加一個 href=’###’,而有時這個 href=’###’ 會被誤寫為 a href=’#’ 是因為使用者沒有理解 ‘#’ 和 ‘###’ 的區別。  簡單地說,就是說如果想定義一個空的連結,又不跳轉到頁面頭部,可以寫href=”###”。詳細解釋就是’#’ 是有特定意義的,如果 ‘#’ 後有內容會被認為是一個標籤而從頁面找到相應標籤跳轉到該處,找不到時會跳到頁首, ‘###’ 其實就是一個無意義的標籤指定,也就是一個 ‘#’ 和不存在的標籤 ‘##’ 的組合,頁面中找不到命名為 ‘##’ 的 a 時該連結就不會發生跳轉,也就不會導致執行 onclick 中的內容時突然發生頁面跳到頁首的問題。’###’ 只是一種使用者習慣,如果你願意,可以隨便找一個跳轉不到的標籤作為命名。說白了”###” 就是一個不是錨點的字串 瀏覽器找不到也不會跳到頁首,原理就是依賴了網頁的報錯機制,找不到就不做處理。  有些人說,不喜歡“###”因為他會改變連結。都是使用一直用javascript:void(0)或者javascript:。href=”javascript:void(0);”但也有人說用href=”javascript:void(0);”可能會有瀏覽器相容問題。在做頁面時,如果想做一個連結點選後不做任何事情,或者響應點選而完成其他事情,可以設定其屬性 href = “#”,但是,這樣會有一個問題,就是當頁面有滾動條時,點選後會返回到頁面頂端,使用者體驗不好。  javascript:void(0)這種偽協議,少寫的好,如果你看過一些web標準的書就知道為什麼了。 2.連結(href)直接使用javascript:void(0)在IE中可能會引起一些問題,比如:造成gif動畫停止播放等,所以,最安全的辦法還是使用“####”。為防止點選連結後跳轉到頁首,onclick事件return false即可。