Skip to content

HTML 超連結 a:href、target 與安全性寫法

HTML 超連結元素 a:href 與 target 的用法

用於指向網頁、文件、電子郵件地址、同一頁面中的位置或任何其他 URL 可定位的功能。href 決定去哪裡、target 決定開在哪裡;開新分頁記得補上 rel,連結文字也要能描述目的地,不要只寫「這裡」。

href

連結的到達位置,可以是 id、網址、檔案、email。

內部連結

網站內,各網頁之間的連結。

html
<a href="./about.html">關於我們</a>

外部連結

連結至站台以外的地方。

html
<a href="https://docs.incode.tw">關於我們</a>

小提醒

  • 外部連結要加上前綴詞 https://

錨點連結

若該網頁的內容太多而造成網頁過高的情況發生,加入此種連結可方便跳至對應的 id 位置。

html
<a href="#Product">商品介紹</a>
...
<div id="Product">...</div>

檔案連結

連結至檔案資源。

html
<a href="./resource/products.docs">檔案下載</a>

加上 download 可以讓瀏覽器直接下載而不是開啟,還能指定下載後的檔名:

html
<a href="./resource/products.pdf" download="產品目錄.pdf">檔案下載</a>

空連結

沒有目標的連結。通常用在專案過程中,沒有明確的目標,但需要做出連結的效果(手指)。

html
<a href="#">下一張</a>
<a href="javascript:;">下一張</a>

小提醒

這個元素其實不是連結、只是要觸發某個動作時,正確做法是改用 按鈕 <button>。它天生就能用鍵盤操作,語意也正確。

電子郵件連結

配合預設的信件軟體進行發送。(Windows 預設為 outlook)

html
<a href="mailto:service@ooxx.com.tw">聯絡我們</a>

小提醒

  • 電子郵件連結要加上前綴詞 mailto:

電話連結

行動裝置上點擊後會直接撥號:

html
<a href="tel:+886227000000">02-2700-0000</a>

target

連結的開啟位置。

說明
_self當前分頁。(預設)
_blank開新分頁。
_parent開至父層頁框。若無父層,則與 _self 相同。
_top開至最外層頁框。若無最外層,則與 _self 相同。

開新分頁請加上 rel

html
<a href="https://docs.incode.tw" target="_blank" rel="noopener noreferrer">前端文件</a>
說明
noopener切斷新分頁對原頁面的存取,避免安全風險
noreferrer不傳送來源網址
nofollow告訴搜尋引擎不要追蹤這個連結

連結文字要能描述目的地

html
<!-- ❌ 看不出要去哪 -->
想了解更多請<a href="/html/what-is-html">點這裡</a>

<!-- ✅ 文字本身就說明了目的地 -->
想了解更多請看 <a href="/html/what-is-html">什麼是 HTML</a>

螢幕閱讀器的使用者常會把整頁的連結列成清單瀏覽,滿頁的 點這裡 完全無法辨識。搜尋引擎同樣會參考連結文字來判斷目標頁面的主題,這也是 內部連結與錨點文字 能替 SEO 加分的原因。

常見問題

開新分頁為什麼要加 rel 屬性?

target="_blank" 開新分頁時,新頁面可以透過 window.opener 影響原本的頁面,形成安全風險。加上 noopener 就能切斷這個關聯。現代瀏覽器多半已預設處理,但明確寫出來比較保險。

連結文字寫成 點這裡 有什麼問題?

螢幕閱讀器的使用者常會把頁面上的連結列成清單,滿頁的 點這裡 完全看不出要去哪。搜尋引擎也會參考連結文字判斷目標頁面的主題,因此請用能描述目的地的文字。

空連結該怎麼寫?

若這個元素其實不是連結、只是要觸發某個動作,正確做法是改用 <button> 元素。真的需要暫時佔位時可以用 #,但別留在正式版本裡。

怎麼讓連結直接下載檔案而不是開啟?

加上 download 屬性即可,還能指定下載後的檔名。要注意它只對同源的檔案有效。

延伸閱讀