紀錄工作經驗、相關知識,解決技術相關問題。

HTML

base html 標籤是什麼? html tag 設定網頁連結

HTML base tag 標籤

HTML <base> 標籤主要是控制網頁的連結屬性,可以指定網頁頁面的文檔與連結根目錄,也可以指定網頁超連結的開啟方式,HTML base 屬性有 href , target。

HTML base 教學說明/範例

HTML <base> tag 原理說明

<base> tag 的原理,是使用 JS 中的 document.baseURL 去做查詢更改,當沒有設定時,預設使用 location.href

白話解釋,當頁面有使用 HTML baes 後,所有的圖片檔案路徑、超連結,都會被整個套用。

以下用兩段 HTML code 對照,來顯示使用 HTML base 對超連結、圖片檔案路徑的差別。

HTML <base> tag 教學

HTML <base> tag 在使用上有其限制,每頁 HTML 只能有一個 <base> tag。

下面是一個 HTML <base> tag 的使用教學,<base> tag 的相關設定都寫在 <head>當中。

<html>
  <head>
    <title>HTML <base> tag 教學說明</title>
    /* HTML base href, target 範例設定 */
    <base href="https://seanacnet.com" target="_blank">
  </head>
  <body>

    <a href="about-html-base">
      關於 html base 用法
    </a>

    <img src="img/about-html-base.img">

  </body>
</html>

上面範例,與下方沒有使用 <base> tag 的頁面,執行結果是相同。

<html>
  <head>
    <title>HTML <base> tag 教學說明比較</title>
  </head>
  <body>
    <a href="https://seanacnet.com/about-html-base" target="_blank">
      關於 html base 用法
    </a>

    <img src="https://seanacnet.com/img/about-html-base.img">
  </body>
</html>

你可以透過 <base> tag 中的 href 來指定整個網頁的連結開頭,只要有設定,任何網頁中的連結都會被 <base> 中的 href 給覆蓋過去。

Example 1

你可以把 <base> tag 想像成它具有高優先級 or 高強制性,讓我們再看一個範例。

<html>
  <head>
    <title>Example 1</title>
  </head>
  <body>

    <h1>這是一個 Html base tag 範例</h1>
    <p>
       <a href="https://ex_domain_xxx/index.html">
         Hello Word!
       </a>
    </p>
    <p>
       <a href="/index.html">
         Go Home
       </a>
    </p>
    <div>
      <img src="https://ex_domain_aaa/img/ex1.img">
      <img src="https://ex_domain_bbb/img/ex2.img">
      <img src="https://ex_domain_ccc/img/ex2.img">
    </div>

  </body>
</html>

範例 Example 1 中,假設我們的網頁,有3張外部的圖片、兩個超連結,分別用了5個不同的 domain 來源/連結。

如果在 Example 1 中,我們再 head 中使用 <base> tag 來定義 href,例如:

<head>
  <base href="https://seanacnet.com">
</head>

那整頁 HTML 執行的最終結果如下:

<html>
  <head>
    <title>Example 1 最終結果</title>
    <base href="https://seanacnet.com">
  </head>
  <body>

    <h1>這是一個 Html base tag 範例</h1>
    <p>
       <a href="https://seanacnet.com/index.html">
         Hello Word!
       </a>
    </p>
    <p>
       <a href="https://seanacnet.com/index.html">
         Go Home
       </a>
    </p>
    <div>
      <img src="https://seanacnet.com/img/ex1.img">
      <img src="https://seanacnet.com/img/ex2.img">
      <img src="https://seanacnet.com/img/ex2.img">
    </div>

  </body>
</html>

Example 1 最終結果可以看出,在網頁執行完畢後,最終呈現的結果,不管是超連結、圖片,都會統一被更換為 <base> 所設定的 href。

HTML <base> 注意事項

值得注意的是,雖然 <base> 在結果上會替換掉頁面的所有連結,但是並不包含 Open Graph ,例如:

<html>
  <head>
    <title>Example 1 最終結果</title>
    <base href="https://seanacnet.com">
    <meta property="og:url" content="https://ex1.com/index.html">
    <meta property="og:image" content="https://ex1.com/ex1.jpg">
  </head>
</html>

上方的 og:url 與 og:image 並不受 <base> tag 影響,所以在使用上,請不要想著 <base> tag 能去更改 meta og 中的連結,因為那並不會有所變化。

詳細的原因,以個人的理解,應該與社群、爬蟲抓取網頁的原理的關係,初步抓取網頁資訊時,並不會執行抓取網頁中的 JS,而 <base> 的原理是使用 JS 中的 document.baseURL,以這個思路來講,也就合理了。

如有覺得錯的,有知道其原理的,可以跟我說一下,會非常感謝你。

HTML <base> tag 瀏覽器相容性

在瀏覽器的相容上,目前全瀏覽器都可以使用,詳細還請觀看 MDN Web Docs <base> 瀏覽器相容性

發表迴響