天天看點

超連結中 href='#' 和 href='###' 的差別

js 運用方式之一:

<a> 标簽 + οnclick='{jscode}' ,相比起 href='javascript:{jscode}'  ,前者能相容多種浏覽器對 <a> 标簽的解釋和處理不同。

而使用  <a> 标簽 + οnclick='{jscode}'  時經常會加一個 href='###';

那麼超連結中 href='#' 和 href='###' 的差別是什麼呢?

簡單地說,

如果想定義一個空的連結,又不跳轉到頁面頭部,可以寫href="###" target="_blank" rel="external nofollow" 。

詳細地說,

'#' 是有特定意義的,如果 '#' 後有内容會被認為是一個标簽而從頁面找到相應标簽跳轉到該處,找不到時會跳到頁首;

'###' 是一個無意義的标簽指定,也就是一個 '#' 和不存在的标簽 '##' 的組合,頁面中找不到命名為 '##' 的 <a> 時該連結就不會發生跳轉,也就不會導緻執行 onclick 中的内容時突然發生頁面跳到頁首的問題;

'###' 隻是一種使用者習慣,如果你願意,可以随便找一個跳轉不到的标簽作為命名。

說白了"###" 就是一個不是錨點的字元串,浏覽器找不到也不會跳到頁首,原理就是依賴了網頁的報錯機制,找不到就不做處理。