/
624.txt
69 lines (51 loc) · 4.01 KB
/
624.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
[1] [DFN[[RUBYB[文書基底 URL]@en[document base URL]]]]は、[[文書]]の[[基底URL]]です。
* 仕様書
[REFS[
- [11] '''[CITE@en[DOM Standard]] ([TIME[2015-08-25 21:41:23 +09:00]] 版) <https://dom.spec.whatwg.org/#concept-document-base-url>'''
- [2] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-06-15 00:38:15 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#terminology-0>
]REFS]
* 定義
[13] [[文書]]は、[DFN[[RUBYB[[[基底URL]]]@en[base URL]]]]を持ちます [SRC[>>11]]。
[14] [[文書]]の[[基底URL]]の[[既定値]]は、 [CODE(URI)@en[[[about:blank]]]]
です [SRC[>>11]]。
* 解説
[5] [[文書基底URL]]は通常は[[文書]]の [[URL]] ですが、
[CODE(HTMLe)@en[[[base]]]] [[要素]]があればその [[URL]] となり、
[CODE(JS)@en[[[window.open]]]] で開かれた[[文書]]なら元の[[文書]]の[[文書基底URL]]となり、
[CODE(HTMLa)@en[[[srcdoc]]]] なら外側の[[文書]]の[[文書基底URL]]となるわけです。
[7] [CODE(DOMm)@en[[[pushState]]]] により[[文書の番地]]が変更されると、[[文書基底URL]]も変化します。
ただし [CODE(HTMLe)@en[[[base]]]] [[要素]]がある場合は影響しません (>>6)。
[9] [[下位層プロトコル]]の中には[[基底URL]]を指定できるものもありますが、
[[文書基底URL]]の定義ではそのような[[プロトコル]]は想定されていないようです。
;; [[HTTP]] では常に[[対象URL]]が[[基底URL]]になりますから、問題ありません。
* API
[15] 現在の値は、[[文書]]の任意の[[節点]]の [CODE(DOMa)@en[[[baseURI]]]]
[[IDL属性]]で取得できます。
[16] 新しい値を設定するには、 [CODE(HTMLe)@en[[[base]]]] [[要素]]の
[CODE(HTMLa)@en[[[href]]]] [[内容属性]]を (なければ作成して)
設定すればOKです。
* 歴史
[12] かつて [[HTML Standard]] では次のように規定されていました。
[3] [[文書基底URL]]は、次の手順により得られる[[絶対URL]]です [SRC[>>2]]。
[FIG(steps)[
= [[[CODE(DOMi)@en[Document]]中]]に [CODE(HTMLe)@en[[[base]]]] [[要素]]で [CODE(HTMLa)@en[[[href]]]]
[[属性]]を持つものがないなら、 [CODE(DOMi)@en[[[Document]]]] の[[フォールバック基底URL]]が[[文書基底URL]]です。
= そうでなければ、 [CODE(HTMLa)@en[[[href]]]] [[属性]]を持つ[[木順]]で最初の [CODE(HTMLe)@en[[[base]]]]
[[要素]]の[[凍結基底URL]]が[[文書基底URL]]です。
]FIG]
[4] ここで[DFN[[RUBYB[[[フォールバック基底URL]]]@en[fallback base URL]]]]は次の手順により得られる[[絶対URL]]です [SRC[>>2]]。
[FIG(steps)[
= [CODE(DOMi)@en[[[Document]]]] が [[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]] 文書]]なら、
その [CODE(DOMi)@en[[[Document]]]] の[[閲覧文脈]]の[[閲覧文脈包含器]]の [CODE(DOMi)@en[[[Document]]]]
の[[文書基底URL]]が[[フォールバック基底URL]]です。
= そうでなく[[文書の番地]]が [CODE(URI)@en[[[about:blank]]]] で [CODE(DOMi)@en[[[Document]]]]
の[[閲覧文脈]]が[[作成器閲覧文脈]]を持つなら、[[作成器[CODE(DOMi)@en[Document]]]]の[[文書基底URL]]が[[フォールバック基底URL]]です。
= そうでなければ[[文書の番地]]を返します。
]FIG]
[REFS[
- [8] [CITE@en[Web Applications 1.0 r7266 Update handling of the <base>.href IDL attribute and clarify how 'document's base URL' is defined.]]
( ([TIME[2012-08-25 03:52:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7265&to=7266>
- [6] [CITE@en[Web Applications 1.0 r7962 Make <base> elements not be affected by changes by to the document's address]] ([TIME[2013-06-13 04:05:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=7961&to=7962>
- [10] [CITE@en[Tie base URLs to documents. Obsoletes xml:base. Fixes https://www.w3.… · whatwg/dom@8ca4959]] ([TIME[2015-09-03 22:20:44 +09:00]] 版) <https://github.com/whatwg/dom/commit/8ca4959505f531663bc91f064a19762e8b90b810>
]REFS]