/
225.txt
90 lines (64 loc) · 5.01 KB
/
225.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
[2] [DFN[[RUBYB[セッション履歴エントリー]@en[session history entry]]]]は、
[[セッション履歴]]中の[[エントリー]]です。
* 仕様書
[REFS[
- [1] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-04-25 04:40:19 +09:00]] 版) <https://html.spec.whatwg.org/#session-history-entry>
]REFS]
* 状態
[4] [[セッション履歴エントリー]]は、次のものから構成されます。
[FIG(list members)[
:[[URL]] (必須) [SRC[>>1]]:[[資源]]の [[URL]] です。
:[RUBYB[[[状態オブジェクト]]]@en[state object]]:
[[利用者インターフェイス]]の状態を表すオブジェクト [SRC[>>1]]。
:[RUBYB[題名]@en[title]]:
[[文書]]のその時点での状態を説明するもの ([[利用者]]が履歴上で [[navigate]]
するためのもの)。 [SRC[>>1]]
:[CODE(DOMi)@en[[[Document]]]] オブジェクト [SRC[>>1]]:[[資源]]の[[文書]]です。
:[[要求メソッド]]その他 [[navigate]] の引数:本[[セッション履歴エントリー]]を作成した [[navigate]] の[[引数]] ([[URL]] 以外)。
[[原始閲覧文脈]]や [[fetch]] の[[引数]]など、[[履歴の探索]]で再度 [[navigate]] するために使います。
[CODE(DOMm)@en[[[replaceState]]]]/[CODE(DOMm)@en[[[pushState]]]] で変更されることがあります。
:[[時刻]]:作成時刻。[[結合セッション履歴]]における[[エントリー]]の[[整列]]に用いられます。
:[[閲覧文脈]]:所属[[セッション履歴]]を持つ[[閲覧文脈]] = [[文書]]オブジェクトの[[閲覧文脈]]。[[履歴の探索]]で参照される。
:[[閲覧文脈名]]:[[履歴の探索]]で読み書きされます。
:[[フォームデータ]] [SRC[>>1]]:
:[[スクロール位置]] [SRC[>>1]]:
:その他:その他の情報も含められます [SRC[>>1]]。
]FIG]
[9] [[利用者エージェント]]定義の状態を持つ[[エントリー]]を[DFN[[RUBYB[持続的利用者状態付きエントリー]@en[an entry with persisted user state]]]]といいます
[SRC[>>1]]。[[利用者エージェント]]定義の状態には、[[フォームデータ]]、
[[スクロール位置]]その他が含まれます [SRC[>>1]]。
;; [CODE(DOMm)@en[[[pushState]]]] を参照。
[8] [[セッション履歴エントリー]]は、[[セッション履歴]]の[[現在エントリー]]である場合があります。
* セッション履歴エントリーの文書
[5] [CODE(DOMi)@en[[[Document]]]] は、[[セッション履歴エントリー]]の作成時に設定されます
[SRC[>>1]]。
[10] 複数の[[セッション履歴エントリー]]の[[文書]]が同じ[[文書]]である場合があります
[SRC[>>1]]。
[EG[
[11] [[状態オブジェクト]]付きの[[エントリー]]が作成された場合や、
[[素片識別子へのスクロール]]のみの [[navigate]] が行われた場合にそうなります [SRC[>>1]]。
]EG]
;; [12] 同じ[[文書]]となることがあるのは、隣接する[[エントリー]]のみです [SRC[>>1]]。
;; [16] 同じ [[URL]] であっても[[セッション履歴エントリー]]の[[文書]]が同じとは限りません。
また異なる[[セッション履歴]]に属する[[エントリー]]の[[文書]]は同じにはなりません。
[18] [[利用者エージェント]]は、ページごとに追加できる[[状態オブジェクト]]数に上限を設けて構いません [SRC[>>1]]。
つまり同じ[[文書]]となる[[エントリー]]の個数に上限を設けることができます。
上限に達したら、[[状態オブジェクト]]を持つ最古のもの (= 同じ[[文書]]を持つ、[[索引]]の小さい方から2番目のもの)
から削除していきます。
;; [CODE(DOMm)@en[[[pushState]]]] を参照。
[6] [[文書]]が[[完全に活性]]でなければ、[[資源]]を解放するために捨てて構いません [SRC[>>1]]。
;; [7] 再度活性化が必要になれば、 [[URL]] その他の情報から改めて作成されます [SRC[>>1]]。
詳しくは [[bfcache]] を参照してください。
[14] [[文書]]が捨てられた場合、再読込で新たに[[文書]]が作られたら、
元々同じ[[文書]]を共有していたすべての[[セッション履歴エントリー]]がその新しい[[文書]]を共有します [SRC[>>1]]。
* 文脈
[3] [[セッション履歴]]は、[[セッション履歴エントリー]]によって構成されるリストです [SRC[>>1]]。
[[セッション履歴]]の[[現在エントリー]]は、そのうちのいずれかの[[エントリー]]です。
[15] [[結合セッション履歴]]は、[[セッション履歴エントリー]]によって構成されるリストです。
[13] [[文書]]の[[最新エントリー]]は、[[セッション履歴エントリー]]です。
* レンダリング
[19] [[履歴]]を参照。
* メモ
[17] [CITE[history.back()の入力データ保持について #HTML - Qiita]]
( ([TIME[2013-03-13 01:44:48 +09:00]] 版))
<http://qiita.com/items/c2de591b4eaff59d3e07>