文書基底URL

文書基底 URL (DOM)

[1] 文書基底 URL (document base URL) は、文書基底URLです。

仕様書

意味

[3] 文書文書文書基底URL (document base URL) は、次の手順で得られる値です >>2

  1. [24] 文書href 属性を持つ base 要素がある場合、
    1. [25] 文書木順で最初の href 属性を持つ base 要素凍結基底URL を返します。
  2. [26] それ以外の場合、
    1. [27] 文書フォールバック基底URLを返します。

[4] 文書文書フォールバック基底URL (fallback base URL) は、次の手順で得られる値です >>2

  1. [18] 文書iframe srcdoc文書の場合、
    1. [19] 文書閲覧文脈閲覧文脈包含子節点文書文書基底URLを返します。
  2. [20] それ以外で、文書番地about:blank で、 文書閲覧文脈作成子閲覧文脈null でなければ、
    1. [21] 文書閲覧文脈作成子基底URLを返します。
  3. [22] それ以外なら、
    1. [23] 文書番地を返します。

解説

[5] 文書基底URLは通常は文書URL ですが、 base 要素があればその URL となり、 window.open で開かれた文書なら元の文書文書基底URLとなり、 srcdoc なら外側の文書文書基底URLとなるわけです。

[7] pushState により文書の番地が変更されると、文書基底URLも変化します。 ただし base 要素がある場合は影響しません (>>6)。

[9] 下位層プロトコルの中には基底URLを指定できるものもありますが、 文書基底URLの定義ではそのようなプロトコルは想定されていないようです。

HTTP では常に対象URL基底URLになりますから、問題ありません。

API

[15] 現在の値は、文書の任意の節点baseURI IDL属性で取得できます。

[16] 新しい値を設定するには、 base 要素href 内容属性を (なければ作成して) 設定すればOKです。

歴史

[17] Remove the concept of creator Document so we don't leak a document · whatwg/html@a996f3b ( 版) <https://github.com/whatwg/html/commit/a996f3b4982f20697f71a23c919567a638519959>

[28] Use HTML's "document base URL" concept ( (Ms2ger著, )) <https://github.com/whatwg/dom/commit/60fac5124f26b5ff216bf122036321fb95ac5556>

[29] >>28 で削除されるまで、 DOM Standard には次のような規定がありました。

[13] 文書は、基底URL (base URL) を持ちます >>11

[12] DOM Standard は document の「base URL」、HTML Standard は 「document base URL」を定義しており、両者は同じものとみられますが、 その関係は明示されていません。 >>14>>3 も若干矛盾しています。

[14] 文書基底URL既定値は、 about:blank です >>11