[88] [DFN[[[navigate]]]] ([[名詞形]] [DFN[navigation]]) は、
[[資源]]へのアクセスを行い[[閲覧文脈]]の表示を切り替えたり、
[[ダウンロード]]その他の動作を発生させたりする操作です。[[ハイパーリンク]]の[[クリック]]やそれに相当する
[[JavaScript]] の操作などにより呼び出されます。
[[Webブラウザー]]を構成する最も基礎的で重要な
(しかし複雑で難解な) [[アルゴリズム]]の1つです。

* 仕様書

[REFS[
- [CITE[HTML Standard]]
-- [12] '''[CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-04-25 04:40:19 +09:00]] 版) <https://html.spec.whatwg.org/#navigate>'''
--- [246] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-04-25 04:40:19 +09:00]] 版) <https://html.spec.whatwg.org/#initialise-the-document-object>
-- [191] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#an-overridden-reload>
-- [210] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#dom-navigator-registercontenthandler>
-- [244] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#origin-2>
-- [258] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#the-sessionstorage-attribute>
-- [446] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-04-25 04:40:19 +09:00]] 版) <https://html.spec.whatwg.org/#traverse-the-history>
- [266] [CITE@en[DOM Standard]] ([TIME[2015-07-16 14:57:57 +09:00]] 版) <https://dom.spec.whatwg.org/#document>
- [285] [CITE@en[Upgrade Insecure Requests]] ([TIME[2015-10-07 03:24:10 +09:00]] 版) <https://w3c.github.io/webappsec-upgrade-insecure-requests/#nesting>
- [416] [CITE@en[High Resolution Time Level 2]] ([TIME[2016-02-26 04:49:50 +09:00]]) <https://w3c.github.io/hr-time/#h-time-origin-1>
- [568] [CITE@en[Mixed Content]], [TIME[2020-04-28 21:05:56 +09:00]] <https://w3c.github.io/webappsec-mixed-content/#strict-nesting>
]REFS]

* 意味

[282] [[navigate]] は、[[閲覧文脈]]の[[履歴]]上に新しい[[エントリー][セッション履歴エントリー]]を作成し、
移動することを目的とした様々な一連の処理です。新しい[[エントリー][セッション履歴エントリー]]は新たにネットワークから取得
([[fetch]]) した[[資源]]かもしれませんし、現在[[閲覧文脈]]で表示中の[[文書]]の[[素片][素片識別子]]かもしれません。

[283] [[navigate]] の結果[[閲覧文脈]]の[[履歴]]上の移動が発生し表示が更新されるのが基本的な動作ですが、
[[navigate]] 先によっては[[ダウンロード]]などの処理が起動することがあります。
あるいは現在の[[閲覧文脈]]ではなく、新しい[[閲覧文脈]] (新しい[[窓]]や[[タブ]])
を開いて [[navigate]] することもあります。

* 文脈

[16] [[navigate]] は、[[仕様書]]で規定されている手順により ([[著者]]の指示により)
実行される場合もあれば、[[利用者エージェント]]依存の方法で ([[利用者]]の直接の指示により)
実行される場合もあります。

[EG[
[17] 前者の例として [CODE(JS)@en[[[location.href]]]] の設定が、
後者の例として[[アドレスバー]]からの [[URL]] の指定があります。
]EG]

[13] [[navigate]] を発生させる操作には、例えば次のものがあります。
[FIG(list middle)[
- [[利用者]]の指示
-- [[利用者発のnavigate]]
-- [[再読込]]操作
-- [[navigate]] によって生成された[[利用者]]に対する選択肢の実行
-- [CODE(HTMLe)@en[[[blockquote]]]]/[CODE(HTMLe)@en[[[ins]]]]/[CODE(HTMLe)@en[[[del]]]] [CODE(HTMLa)@en[[[cite]]]]
をたどる[[利用者インターフェイス]]上の操作
- [[利用者]]または[[著者]]の指示
-- [[ハイパーリンクをたどる]]
-- [[フォーム提出]]
-- [178] [DFN[[RUBYB[エントリー更新]@en[entry update]]]] [SRC[>>446]] のための [[navigate]]:
[[bfcache]] が既に破棄されている場合 ([[履歴の探索]]や[[セッション履歴エントリー]]を参照。)
や、[[再読込]]が指示された場合。
- [[著者]]の指示
-- [[フレーム]]
-- [CODE(HTMLe)@en[[[object]]]] [[要素]]
-- [CODE(HTMLe)@en[[[embed]]]] [[要素]]
-- [CODE(JS)@en[[[window.open]]]]
-- [CODE(JS)@en[[[location.assign]]]]
-- [CODE(JS)@en[[[location.replace]]]]
-- [CODE(JS)@en[location.href]] および各[[URL分解属性]]
-- [CODE(JS)@en[[[location.reload]]]]
-- [CODE(JS)@en[navigator.plugins.refresh]]
-- [CODE(HTTP)@en[[[Refresh]]]]
-- [[プラグイン]]からの指示
--- [[NPAPI]], [[PPAPI]]
--- [[Flash]] ([[ActionScript]])
-- [[change the encoding]]
- 他のアプリケーションからの指示
-- [[コマンドライン引数]]や[[プロセス間通信]]等の他の[[アプリケーション]]からの [[URL]] の指定
-- [[WebDriver]] の操作
-- [[ブラウザー拡張]]からの指示
-- [[開発者コンソール]]など[[ブラウザー]]内の外部機能からの指示
]FIG]

* 入力

[41] [[navigate]] には、次の入力 ([[引数]]) があります。最初の3つは必須です。
[FIG(list members)[
:[14] [VAR[[[navigate]] する[[閲覧文脈]]]]:[[navigate]] によって[VAR[新しい[[資源]]]]を表示するべき[[閲覧文脈]]です。
:[21] [VAR[新しい[[資源]]]]:[VAR[[[navigate]] する[[閲覧文脈]]]]に新たに表示するべき[[資源]]です。
ここで[[資源]]は次のものによって表されます。
[FIG(list members)[
: [F[要求]] : [[要求]]または [[null]]。
[FIG(list members)[
([[要求]]は[F[URL][要求URL]] ([[URL記録]]。必須。)、
[F[参照元]] ([CODE[client]] または [CODE[no-referrer]]。既定値は [CODE[client]]。)、
[F[参照元ポリシー]] ([[参照元ポリシー]]。既定値は[[空文字列]]。)、
[F[メソッド][要求メソッド]] ([CODE(HTTP)@en[GET]] または [CODE(HTTP)@en[POST]]。
既定値は [CODE(HTTP)[GET]]。)
を持ちます。)
: [VAR[[CODE[acceptSslCerts]]]] :
[[WebDriver]] の [CODE[acceptSslCerts]] か、それに相当する[[利用者インターフェイス]]上の操作を[[利用者]]が行ったかどうかを表すフラグです。
[[既定値]]は[[偽]]です。
]FIG]
: [F[応答]] : [[応答]]または [[null]]。
([CODE(HTMLe)@en[embed]]/[CODE(HTMLe)@en[object]] の [[fetch]] の結果、
[[ネットワークエラー]]など。)

- ([[リダイレクト]]前の) 最初の [[URL]]
- [[応答]]
- [[a known definite encoding]]
- [[AppCache]] から [[fetch]] したか否か

[EG[
[24] [CODE(HTMLe)@en[[[object]]]] [[要素]]や [CODE(HTMLe)@en[[[embed]]]] の処理では、
[[資源]]の [[fetch]] が開始されてから [[navigate]] が呼び出されることがあります。
]EG]
[EG[
[55] [[navigate]] の結果表示される [[navigate]] の選択肢を[[利用者]]が選んだ場合にも、
(再度 [[fetch]] するのは無駄なので) [[fetch]] 結果付きで [[navigate]] を呼び出すべきかもしれません。
]EG]
[EG[
[186] [[ハイパーリンクをたどる]]場合[DEL[や [CODE(JS)@en[window.open]] や [[overridden reload]] で]]は、
[[URL]] のかわりにソースやエラーページが指定された [[navigate]] が実行されることもあります。
]EG]
[EG[
[188] [[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]では [[URL]]
と共にソースが指定されます。
]EG]
[EG[
[189] [CODE(JS)@en[[[document.open]]]] で追加される[[セッション履歴エントリー]]の[[エントリー更新]]では指定されたソースが使われます。
]EG]
[EG[
[225] [[change the encoding]] は[[応答]]を指定して、または [[URL]] 等 [[fetch]]
条件を指定しての [[navigate]] を呼び出すことがあります。その際
[[a known definite encoding]] も指定されます。
]EG]
]FIG]
: [VAR[ナビゲーション型]] : [CODE[form-submission]] または [CODE[other]]。
[[既定値]]は [CODE[other]]。
:[15] [DFN[[VAR[[RUBYB[始点閲覧文脈]@en[source browsing context]]]]]]:
[[navigate]] の開始に責任を持つ[[閲覧文脈]]です [SRC[>>12]]。
[VAR[[[始点閲覧文脈]]]]は、 [VAR[[[navigate]] する[[閲覧文脈]]]]について
[[navigate]] を認められているか、いないかのいずれかです。
:[19] [DFN[[VAR[[RUBYB[例外有効]@en[exceptions enabled]]]]]] [SRC[>>12]]:
[[navigate]] できない時に[[例外]]を投げるかどうかのフラグです。
:[22] [VAR[[[reload-triggered navigation]]]] [SRC[>>12]]:[[再読込]]操作かどうかのフラグです。
このフラグが設定されていれば、[[素片識別子]]を無視すると現在表示中の[[文書]]の
[[URL]] と等しい時でも、 [[navigate]] が行われます。
[[利用者]]が[[アドレスバー]]で [[URL]] をした場合、
[[ブックマーク]]を選択した場合、
[[プロセス間通信]]により他の[[アプリケーション]]から [[URL]] を与えられた場合など、
[[著者]]以外の指示で [[navigate]] を実行する場合には、
このフラグを設定するべきと考えられます。
:[238] [VAR[新しい[[最上位閲覧文脈]]]] :
[[閲覧文脈]]を使わなかった時に[[窓]]や[[タブ]]を閉じるべきかどうかに影響します。
[[閲覧文脈の選択]]を参照。
: [VAR[[[利用者]]が[[閲覧文脈]]を明示した]] :
[[allowed to navigate]] をバイパスするか否かに影響します。
:[98] [VAR[[[エントリー更新]]する[[エントリー]]]]:[[エントリー更新]]のための [[navigate]]
の場合には、その[[セッション履歴エントリー]]。
:[179] [VAR[キャッシュ上書き]] : 
[[スーパーリロード]]による [[navigate]] 時に指定されます。
[[再読込]]参照。
:[190] [VAR[[[reload override flag]]]]:[CODE(JS)@en[[[document.open]]]] により破棄された[[文書]]を再表示するために使います。
:[195] [VAR[[[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]]]:
[[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]かどうかを表します。
:[245] [VAR[[[文書の起源]]]] [DEL[と[VAR[[[実効スクリプト起源]]]]]] :
[VAR[新しい[[資源]]]]の[F[URL]]の[F[scheme][URL scheme]]が
[CODE(URI)@en[data][data:]] や [CODE(URI)@en[javascript][javascript:]]
の場合に使われる可能性のある[[起源]][DEL[と[[実効スクリプト起源]]]]です。
[CODE(URI)@en[[[data:]]]] [[URL]] では、
[[スクリプト]]による呼び出しの場合は[[現職設定群オブジェクト]]の[F[起源][文書の起源]][DEL[と[F[実効スクリプト起源]]]]、
そうでない場合は[[要素]]の[F[節点文書]]の[F[起源][文書の起源]][DEL[と[F[実効スクリプト起源]]]]です [SRC[>>244]]。
[CODE(URI)@en[[[javascript:]]]] [[URL]] では、
[VAR[[[navigate]] する[[閲覧文脈]]]]の[F[活性文書]]の[F[起源][文書の起源]][DEL[と[F[実効スクリプト起源]]]]です [SRC[>>244]]。
(いずれにせよ、 [[navigate]] 呼び出し時点での値です。)
: [VAR[提案ファイル名]] :
[[navigate]] の結果[[ダウンロード]]となった時に使う[[ファイル名]]です。
[[リンク元]]の[[要素]]の [CODE(HTMLa)@en[download]] [[属性値]]が設定されます。
: [VAR[[[遷移型]]]] : ページ遷移を発生させた利用者等の操作の種類を表す値です。
: [VAR[[[遷移修飾子]]群]] : [[navigate]] の発生要因を表す値のリストです。

[HISTORY[
[310] 次のオプションは廃止されました:

:[20] [DFN[[VAR[[RUBYB[明示的自己ナビゲーション上書き]@en[explicit self-navigation override]]]]]] [SRC[>>12]]:
[VAR[[[navigate]] する[[閲覧文脈]]]]の選択方法についてのフラグです。
[CODE(DOMa)@en[[[seamless]]]] な [CODE(HTMLe)@en[[[iframe]]]] 内での[[リンク]]が外側の[[閲覧文脈]]の
[[navigate]] に読み替えられるべきかどうかの判断に影響します。 ([CODE(HTMLa)@en[[[target]]]]
による[[閲覧文脈]]の選択と [[navigate]] は別[[タスク]]で行われることがあるため、
その間に [CODE(HTMLa)@en[[[seamless]]]] かどうかは変化することがあり、
一般に [[navigate]] 呼び出し前に予めその判断を済ませておくことはできません。)
:[43] [DFN[[VAR[[RUBYB[上書きURL][override URL]]]]]] [SRC[>>12]]:[[文書の番地]]として使う [[URL]]
です。外部から設定されるのは [[override reload]] やそれに相当する[[履歴の探索]]の時だけですが、
[[navigate]] 中に [CODE(URI)@en[[[javascript:]]]] の処理で設定されることもあります。
:[65] [VAR[triggered by user activation]]:
[[allowed to navigate]] や[[外部アプリケーション]]を起動するべきかどうかに影響します。
[[navigate]] 呼び出し元の[[タスク]]によって決まります。
[[triggered by user activation]] や[[閲覧文脈の選択]]を参照。
]HISTORY]
]FIG]

[116] [VAR[[[navigate]] する[[閲覧文脈]]]]や[VAR[新しい[[資源]]]]はアルゴリズム内で変更されることがあります。

[121] [[navigate]] は [[unload a document]] や [[prompt to unload a document]]
が実行中かどうかにより分岐することがあります。それらが同じ[[閲覧文脈]]の [[navigate]]
と[[並列]]に実行されることは無いので、事実上、それらの手続きの内側での呼び出しかどうかを調べるものです。

[120] [[navigate]] や [[traverse the history by a delta]] や
[CODE(JS)@en[[[window.stop]]]] は、
同じ[[閲覧文脈]]に関する他の [[navigate]] にアクセスすることがあります。

;; [167] [[navigate]] から呼び出した [[unload a document]] を実行中か調べることもあります。

[122] [[navigate]] は、取り消しされることがあります (>>123)。
[VAR[取り消し]]フラグは取り消されたかどうかを表します。
取り消された場合は理由が設定されます。

[108] 入力ではありませんが、アルゴリズム中で
[DFN[[VAR[[[mature]]]]]] フラグを使います。どちらも初期値は[[偽]]です。 [SRC[>>12]]
[VAR[時刻起源]]の初期値は[[未定義]]です。

;; [177] [[mature]] フラグは [[traverse the history by a delta]] からも参照されます。

[HISTORY[
[422] かつては [DFN[[VAR[gone async]]]] フラグがあり、
[[リダイレクト]]に関する複雑な処理が記述されていました。
2016年7月改訂でこれを使わない形に改められました。
]HISTORY]

[117] 入力ではありませんが、アルゴリズム内で[VAR[新しい[[文書]]]]が作成されることがあります。

[42] [VAR[始点文書]]は、[[navigate]] 開始時点の[VAR[始点閲覧文脈]]の[F[活性文書]]です。
[VAR[始点設定群オブジェクト]]は、 [[navigate]] 
開始時点の[VAR[始点文書]]の[F[環境設定群オブジェクト]]です。

;; [330] [[HTML Standard]] は「[[navigate]] 開始時点」とは規定していませんが、
[[リダイレクト]]を含む場合、[VAR[始点閲覧文脈]]の他の [[navigate]]
によって[F[活性文書]]が変化する可能性がありそうで、
その場合でも元の[F[活性文書]]を使うのが適切そうです。

* 概略

[226] [[navigate]] は次のように複雑に動作します。

[FIG(flow)[
:start:開始 >>18
:->:terminate
:->:url

:terminate: 停止
:>>:5

:url:URL >>162
:->:fragment
:->:fetch
:->:nondoc
:->:outside

:fetch: Fetch >>145
:->:cleanup
:->:res

:res:[[応答]] >>26
:->:mime
:->:nondoc
:->:outside

:mime:MIME 型 >>44
:->:doc
:->:nondoc
:->:outside

:doc: 文書 >>30
:->:history

:nondoc:非文書 >>47
:>>:1
:->:history

:outside: 文脈外 >>48
:>>:2
:->:cleanup

:history: 履歴 >>95
:->:cleanup

:fragment: 素片 >>163
:>>:4
:->:cleanup

:cleanup: 停止 >>109
:v:
:>>:5
]FIG]

* navigate の開始

[18]
[[navigate]]
は、

次のようにしなければ[MUST[なりません]]
[SRC[>>12]]。

[FIG(steps)[
= [293] 
[VAR[[[利用者]]が[[閲覧文脈]]を明示した]]が[[偽]]の場合で [SRC[仕様書になし]]、
[VAR[[[始点閲覧文脈]]]]が [VAR[[[navigate]] する[[閲覧文脈]]]]を 
[[navigate することを認められてい][allowed to navigate]]''ない''場合、
== [296] [VAR[例外有効]]なら、
=== [453] [CODE(DOMe)@en[[[SecurityError]]]] [[例外]]を投げます。
== [237] そうでなければ、
=== [454] [[利用者エージェント]]は、[[利用者]]に次の選択肢を提示しても構いません。
(>>236 も参照)
[FIG(list)[
- [294] 新しい[[最上位閲覧文脈]]を開き、そちらをかわりに [[navigate]]
- [295] [VAR[[[始点閲覧文脈]]]]の[[最上位閲覧文脈]]をかわりに [[navigate]]
]FIG]
== [297] 停止します。
= [298] 
[FIG(list)[
- [VAR[[[始点閲覧文脈]]]]と [VAR[[[navigate]] する[[閲覧文脈]]]]が同じで、
- [VAR[[[navigate]] する[[閲覧文脈]]]]が他の [[navigate]] を実行中で、
- その [[navigate]] が [[unload a document]] を実行中
]FIG]
... なら、
== [450] ここで停止します。
= [451] [[prompt to unload a document]] を実行中で、
それが [VAR[[[navigate]] する[[閲覧文脈]]]]の[[活性文書]]に関するものなら、ここで停止します。
= [452] 
[VAR[[[navigate]] する[[閲覧文脈]]]]についての
[[URL]] に基づく処理 (>>162) に移ります。
]FIG]


[236] [[入れ子閲覧文脈]]で [[navigate]] するべきところ、かわりに
>>237 操作を[[利用者]]に選択させるのは、[[著者]]の[[砂箱化]]の要求を無視する場合もあり、
危険かもしれません [SRC[>>12]]。 [[Webブラウザー]]は、 [[popup sandboxing flag set]]
を活用するなど、安全性への配慮が必要かもしれません。

;; [[砂箱化]]や[[閲覧文脈の選択]]も参照。

[404] [CODE[webNavigation]] API の [CODE[onBeforeNavigate]] はこの付近のタイミングで現在時刻と共に呼び出されるものと思われますが、
明文規定は存在しないようです。

[458] [[ハイパーリンク]]を[[利用者]]が他の[[閲覧文脈]]に[[ドラッグ]]したことにより
[[navigate]] が開始された場合など、 [[navigate]] 開始の時点で[VAR[始点閲覧文脈]]が
(本来なら) 既に消滅している[[閲覧文脈]]であったり、
[[活性文書]]が別のものに変化していたりする可能性があります。
そうした場合でも元の[[閲覧文脈]]が始点であるものとして処理を続けるべきかもしれませんし、
始点がない新しい [[navigate]] として扱うべきかもしれません。

-*-*-

[491] [CITE[Web App Manifest]] は [[navigation scope]] と称して
[[Webアプリケーション]]の「内側」の範囲を規定することができ、
その外側への[[リンク]]を拒んだり、[[Webアプリケーション]]とは別の
[[Webブラウザー]]の[[窓]]の[[閲覧文脈]]を [[navigate]]
したりすることになっています。
この処理もこの段階で行う必要があります (が、現時点で [CITE[HTML Standard]]
の [[navigate]] の処理と統合されていません)。

;; [[navigation scope]] も参照。

[492] [[埋め込みブラウザー]]も、[[アプリケーション]]に対して [[navigate]]
可能な [[URL]] の範囲を限定する機能を提供している場合があり、
同様に検査が入ることがあります。

;; [[埋め込みブラウザー]]も参照。

[493] なお、これらの検査は、後述の通り [[HTTPリダイレクト]]後の [[URL]]
に対しても行う必要があります。

* URL に基づく処理

[162]
[[URL]]
に基づく処理は、
[VAR[閲覧文脈]]について次のようにします
[SRC[>>12]]。

[FIG(steps)[
= [382] 
[FIG(list)[
- [383] [VAR[[[reload-triggered navigation]]]] が[[偽]]
- [434] [VAR[新しい[[資源]]]]の[F[要求]]が [[null]] でない
- [384] [VAR[新しい[[資源]]]]の[F[要求]]の [F[URL][要求URL]] と
[VAR[閲覧文脈]]の[F[活性文書]]の[F[URL][文書の番地]]が
[VAR[[[URL除外フラグ]]]]付き[[URL等価]]
- [385] [VAR[新しい[[資源]]]]の[F[要求]]の [F[URL][要求URL]] の[F[素片][素片識別子]]が [[null]] でない
-
@@ [386] [DEL[[VAR[新しい[[資源]]]]の[F[メソッド][要求メソッド]]が [CODE(HTTP)@en[[[GET]]]]]]
]FIG]
... のすべてを満たすなら、
== [387] [[素片識別子]]に navigate (>>163) する処理に移り、こちらはここで終わります。
=
[597] 
[VAR[活性文書navigateする起源]]を、
[VAR[閲覧文脈]]の[F[活性文書]]の[F[起源][文書の起源]]に設定します。
= 
[599] 
[[スクリプト]]からの呼び出しの場合、
== 
[598] 
[VAR[現職navigateする起源]]を、
[[現職設定群オブジェクト]]の[F[起源]]に設定します。
= 
[600] 
それ以外の場合、
==
[601] 
[VAR[現職navigateする起源]]を、
[[navigate]]
を開始した[[要素]]の[F[節点文書]]の[F[起源][文書の起源]]に設定します。
= [423] [[利用者エージェント]]が実行中の各 [[navigate]]
[VAR[[[navigate]]]] について、
順に、
== [602] 
[VAR[navigate]] の[F[閲覧文脈]]が[VAR[閲覧文脈]]で、
[VAR[navigate]] の [F[mature]] が[[偽]]の場合、
=== 
[603] 
[VAR[navigate]] を取り消し (>>123) 
します。
= [411] [[prompt to unload a document]] を実行します。
= [412] [VAR[取り消し]]フラグが設定されているか、 [[refused to allow the document to be unloaded]] なら、
== [413] 後片付け (>>109) に移り、こちらはここで終わります。
= [414] [VAR[閲覧文脈]]の[F[活性文書]]を、
[[abort][文書のabort]]します。
= [415] [VAR[時刻起源]]を、[[現在時刻]]に設定します。 [SRC[>>416]]
= [477] [VAR[閲覧文脈]]の[F[[[子供閲覧文脈]]である]]が[[真]]の場合、
== [478] [VAR[閲覧文脈]]の 
[F[[[delaying [CODE(DOMe)@en[load]] events mode]]]] を、
[[真]]に設定します。
=
[181] 
[VAR[砂箱フラグ群]]を、
[[砂箱化フラグ群]]を決定した結果に設定します。
= [155] [[並列に]]、
[VAR[新しい[[資源]]]]の[F[要求]]または[VAR[新しい[[資源]]]]の[F[応答]]の
[CODE[null]]
でない方,
[VAR[現職navigateする起源]],
[VAR[活性文書navigateする起源]],
[VAR[砂箱フラグ群]]について
[[fetch]] またはそれに相当するもの (>>145) を実行します。
]FIG]

;; [196] [[navigate]] の続きの処理は[[並列に]]実行され、 [[navigate]] 
の呼び出し元はそちらの次の処理へと進みます。

;; [224] [[素片識別子]]が無い [[URL]] なら、[[文書の番地]]と同じ [[URL]]
であっても、[[素片識別子]]への [[navigate]] ではなく通常の [[navigate]]
になります。

[410] [VAR[新しい[[資源]]]]の [F[URL]] に [[userinfo]] が含まれる場合、
[[Chrome]] は無視する (認証に使わない) ようです。
[[Firefox]] は[[フィッシング]]の可能性を指摘する [[confirm]]
[[モーダルダイアログ]]を表示し、[[利用者]]が拒んだ場合は何もしないこととするようです。
[TIME[2016-06-19T15:55:48.300Z]]

[403] [[事前レンダリング]]が実装されていて本 [[navigate]] で利用できる場合には、
[[fetch]] のかわりに[[事前レンダリング]]への差し替えが行われるものと思われますが、
明文規定はありません。

;; [[事前レンダリング]]参照。

* fetch またはそれに相当するもの

[145] [[fetch]] やそれに相当する操作は、
[[要求]]または[[応答]][VAR[資源]],
[VAR[現職navigateする起源]],
[VAR[活性文書navigateする起源]],
[VAR[砂箱フラグ群]]について、
次のようにします。


[FIG(steps)[
= [146] 
[VAR[資源]]が[[応答]]の場合、
== [201] [[navigate応答の処理]] (>>26) を実行します [SRC[>>12]]。
[FIG(list members)[

: [VAR[要求]] : [CODE[null]]
: [VAR[応答]] : [VAR[新しい[[資源]]]]の[F[応答]]
: [VAR[閲覧文脈]] : [VAR[[[navigate]]する[[閲覧文脈]]]]
: [VAR[始点閲覧文脈]] : [VAR[始点閲覧文脈]]
: [VAR[ナビゲーション型]] : [VAR[ナビゲーション型]]
: [VAR[現職navigateする起源]] : [VAR[現職navigateする起源]]
: [VAR[活性文書navigateする起源]] : [VAR[活性文書navigateする起源]]
: [VAR[砂箱フラグ群]] : [VAR[砂箱フラグ群]]

]FIG]
= [147] それ以外で、 
[VAR[資源]]の [F[URL][要求URL]] の [F[scheme][URL scheme]]
が [CODE(URI)@en[javascript][javascript:]] 
の場合、
== [148] 
[[タスクをキューに追加]]します。 [SRC[>>12]]
[FIG(list members)[

: [VAR[処理]] :
[FIG(steps)[

= [585] 
[VAR[応答]]を、
[VAR[資源]]、
[VAR[[[始点閲覧文脈]]]]、
[VAR[[[navigate]] する[[閲覧文脈]]]]について、
[[[CODE[javascript:]] URL要求を実行]]した結果に設定します。
= [586] 
[VAR[新しい[[資源]]]]、
[VAR[応答]]、
[VAR[ナビゲーション型]]、
[VAR[始点閲覧文脈]]、
[VAR[閲覧文脈]]、
[VAR[現職navigateする起源]]、
[VAR[活性文書navigateする起源]]、
[VAR[砂箱フラグ群]]について、
[[navigate応答を処理]]します。

]FIG]
: [VAR[[[タスク源]]]] : [[DOM操作タスク源]]
: [VAR[文書]] : [[活性文書]]の[F[閲覧文脈]]

]FIG]
= [149] それ以外で、
[FIG(list)[
- [VAR[資源]]の[F[メソッド][要求メソッド]]が [CODE(HTTP)@en[[[GET]]]] で、
- [VAR[資源]]の [F[URL][要求URL]] と[[同じ[F[起源]]]]の [[URL]] を持つ [[relevant application cache]]  があり、
- その [[AppCache]] [[エントリー]]のいずれかが[VAR[資源]]の [F[URL][要求URL]] を持ち、
- ただしその[[エントリー]]は [[foreign]] ではなく、
- その [[mode]] が [[fast]] であり、
- [[利用者エージェント]]が[[AppCache]]を使わないモードでなければ、
]FIG]
... [[最適AppCache]]からの[VAR[新しい[[資源]]]]の [[fetch]] を呼び出します [SRC[>>12]]。
=- [150] この時、[VAR[ナビゲーション型]]が [CODE[form-submission]] なら、
[[fetch]] の呼び出し元の[[起源]]は[VAR[始点文書]]の[[起源]]に (あれば)
します [SRC[>>12]]。
==
@@
= [154] [VAR[資源]]の[F[URL][要求URL]]の[F[scheme][URL scheme]]が
[[fetch scheme]] 
の場合、
== [198] [[navigate fetchの処理]]を実行します。
[FIG(list members)[

: [VAR[要求]] : [VAR[要求]]
: [VAR[閲覧文脈]] : [VAR[[[navigate]]する[[閲覧文脈]]]]
: [VAR[始点閲覧文脈]] : [VAR[始点閲覧文脈]]
: [VAR[ナビゲーション型]] : [VAR[ナビゲーション型]]
: [VAR[現職navigateする起源]] : [VAR[現職navigateする起源]]
: [VAR[活性文書navigateする起源]] : [VAR[活性文書navigateする起源]]
: [VAR[砂箱フラグ群]] : [VAR[砂箱フラグ群]]

]FIG]
= [199] それ以外なら、
== [202] [VAR[資源]]の [F[URL][要求URL]]
と[VAR[[[navigate]]する[[閲覧文脈]]]]について、
[[navigate URL schemeの処理]]を実行します。
]FIG]

[214] 以前は、 [[Webブラウザー]]依存の条件 (>>206) 次第で[[閲覧文脈]]外 (>>48) または[[非文書表示]]に移れることになっていました。
2016年7月の改訂で条件が明確化されたのですが、それによって、例えば
[CODE(URI)@en[about:blank]] 以外の [CODE(URI)@en[about:]] [[URL]]
の表示や、一部の [CODE(URI)@en[http:]] [[URL]] で[[アプリ]]が起動される機能が認められない形になってしまいました。

[90] [[プラットフォーム]]によっては、 ([CODE(URI)@en[[[http:]]]] [[URL]] も含め)
[[URL scheme]] や [[URL]] のパターンに対して処理する[[アプリケーション]]を登録できるものがあります。
その場合には、候補が1つならそれを起動したり、候補が複数なら候補リストを表示したりできます。
[[Webブラウザー]]自身が扱えるものなら、[[Webブラウザー]]か[[外部アプリケーション]]かも選択できたりします。

[EG[
[455] [[Windows]] は古くから ([[URL scheme]] ごとに1つだけ)
実行する[[アプリケーション]]の[[ファイル名]]、[[コマンドライン引数]]、
[[DDE]] オプションなどを[[レジストリー]]に登録できる形を採っています。
]EG]

[EG[
[456] [[Android]] では古くから [[URL scheme]] ごと、あるいは [CODE(URI)@en[http:]]
などの [[URL]] のパターンに対して[[アプリケーション]]を登録でき、
複数ある場合は[[利用者]]が一覧から選択したり、既定のものを決定できたりします。
]EG]

[EG[
[457] [[iOS]] では [[URL scheme]] ごとに[[アプリケーション]]を登録できる他、
[CODE(URI)@en[http:]] などの [[URL]] のパターンに対して[[アプリケーション]]を登録できる機能は
[[Universal Links]] と呼ばれています。
]EG]

[91] [CODE(URI)@en[[[http:]]]] [[URL]] や [[HTML文書]]のすべてをそうした形で処理するのは、
[[Webブラウザー]]として実用的では無さそうです。一定期間選択結果を覚えておいたり、
同じ[[起源]]からの [[navigate]] なら無条件で [[Webブラウザー]]自身で処理することにしたりしないと、
頻繁に確認ダイアログを表示することになるかもしれません。

[464] [[利用者]]が結局自 [[Webブラウザー]]を使うことを選択した場合、
同じ [[navigate]] が処理を継続するのか、
新しい [[navigate]] を起動するのかは不明です。
後者の場合、再び候補からの選択を[[利用者]]に提示すると永遠に
[[Webブラウザー]]では開けないことになってしまいますから、
[[利用者]]の意図的な選択かどうかで分岐する必要がありそうです。
[[著者]]の指定に基づく [[navigate]] であるか、
外部アプリケーションからの起動オプションなどによる指定であるかによって分岐するのが良いでしょうか。
(外部アプリケーションが明示的に [[Webブラウザー]]に [[URL]] を渡す場合も、
何かの[[アプリ]]で開くのではなく、 [[Webブラウザー]]で開きたいのだと判断できそうです。
例えば[[ニュースアプリ]]の「ブラウザーで開く」機能とか。)

[153] [[Chrome]] など一部の [[Webブラウザー]]は、 [[Safe Browsing]]
により [[URL]] を検査し、危険と判断すれば[[ネットワークエラー]]の[[非文書表示]]に移ります。

-*-*-

[398] 
[DFN[[RUBYB[navigate fetchの処理]@en[process a navigate fetch]]]]は、
[VAR[要求]],
[VAR[閲覧文脈]],
[VAR[始点閲覧文脈]],
[VAR[ナビゲーション型]],
[VAR[現職navigateする起源]],
[VAR[活性文書navigateする起源]],
[VAR[砂箱フラグ群]]について、
次のようにします [SRC[>>12]]。

[FIG(steps)[
= [462] [VAR[予約済み環境]]を、新しい[[環境]]に設定します。
[FIG(list members)[ [463] [[環境]]

: [F[識別子][環境設定群オブジェクト]] :
新しい固有識別子
: [F[作成URL]] :
[VAR[要求]]の[F[URL][要求URL]]
: [F[対象閲覧文脈]] :
[VAR[閲覧文脈]]

]FIG]
= [151] [VAR[要求]]の各欄を次の通り設定します。
[FIG(list members)[ [461] [[要求]]
: [F[クライアント]] : [VAR[始点設定群オブジェクト]]
: [F[終点]]         : [CODE[document]]
: [F[モード]]       : [CODE[navigate]]
: [F[credentialsモード]]: [CODE[include]]
: [F[URL credentials利用フラグ]]: [[真]]
: [F[リダイレクトモード]]: [CODE[manual]]
: [F[起源]] :
[VAR[[[navigate]] する[[閲覧文脈]]]]の[F[包含子][閲覧文脈包含子]]が
[CODE[null]] で''なく''、
[VAR[[[navigate]] する[[閲覧文脈]]]]の[F[包含子][閲覧文脈包含子]]の[F[閲覧文脈適用範囲起源]]がある場合、
[VAR[[[navigate]] する[[閲覧文脈]]]]の[F[包含子][閲覧文脈包含子]]の[F[閲覧文脈適用範囲起源]]
: [F[キャッシュモード]] : [VAR[キャッシュ上書き]]により定める [SRC[仕様書に規定なし]]
: [F[置換クライアント識別子]] :
[VAR[閲覧文脈]]の[F[活性文書]]の[F[関連設定群オブジェクト]]の[F[識別子][環境設定群オブジェクト]]
: [F[予約済みクライアント]] :
[VAR[予約済み環境]]

]FIG]
= [443] [VAR[要求]]、[VAR[ナビゲーション型]]、
[VAR[始点閲覧文脈]]、[VAR[閲覧文脈]]について
[[Should navigation request of type from source in target be blocked by Content Security Policy?]]
を実行した結果が [CODE[Blocked]] なら、
== [444] [[ネットワークエラー]]について、続きの処理 (>>156) を実行します。
= [445] それ以外なら、
== [152] 
[[fetch]]
します。
[FIG(list members)[
: [VAR[要求]] : [VAR[要求]]
: [VAR[[[process response]]]] : 
続きの処理 (>>156)
]FIG]

]FIG]

[156] 続きの処理は、
[VAR[応答]]について、
次のようにします [SRC[>>12]]。

[FIG(steps)[
= [362] [VAR[応答]]の[F[location URL]]が[[失敗]]なら、
== [363] [VAR[要求]]と[VAR[応答]]について、[[HTTPリダイレクトfetch]]を実行します。
[[process response]] は、 >>156 とします。
= [364] それ以外で、[VAR[応答]]の[F[location URL]]が [[URL記録]]なら、
[VAR[応答]]の[F[location URL]]の[F[scheme][URL scheme]]により、
[FIG(switch)[
: [[HTTP(S) scheme]] :
[VAR[要求]]と[VAR[応答]]について、[[HTTPリダイレクトfetch]]を実行します。
[[process response]] は、 >>156 とします。
: [CODE(URI)@en[blob]], [CODE(URI)@en[file]], [CODE(URI)@en[filesystem]], [CODE(URI)@en[javascript]] :
[VAR[応答]]を、[[ネットワークエラー]]に設定します。
: その他の [[fetch scheme]] :
[[navigate fetchの処理]]を実行します。
[FIG(list members)[
: [VAR[要求]] :
[FIG(list members)[
[FIGCAPTION[
[[要求]]
]FIGCAPTION]
: [F[URL][要求URL]] : [VAR[応答]]の[F[location URL]]
]FIG]
: [VAR[閲覧文脈]] : [VAR[閲覧文脈]]
: [VAR[始点閲覧文脈]] : [VAR[始点閲覧文脈]]
: [VAR[ナビゲーション型]] : [VAR[ナビゲーション型]]
]FIG]
: それ以外 :
[[navigate URL schemeの処理]]を実行します。[VAR[応答]]の[F[location URL]]と[VAR[閲覧文脈]]を引き渡します。
こちらはここで終わります。
]FIG]
= [365] '''Fallback in prefer-online mode''': 
[FIG(list)[
- [VAR[応答]]を [[AppCache]] から [[fetch]] した場合で、
- [VAR[要求]]の[F[メソッド][要求メソッド]]が [CODE(HTTP)@en[[[GET]]]] で、
- [VAR[応答]]の[F[URL]]と[[同じ起源]]の [[URL]] を持つ [[relevant application cache]]  があり、
- その [[AppCache]] [[エントリー]]のいずれかの[F[URL]]が[VAR[応答]]の[F[URL]]で、
- ただしその[[エントリー]]は [[foreign]] ではなく、
- その [[mode]] が [[prefer-online]] であり、
- [VAR[取り消し]]フラグが理由 [[end-user abort]] で設定されておらず、
- [VAR[応答]]が[[ネットワークエラー]]か[VAR[応答]]の[F[状態][状態符号]]が非[[OK状態]]
]FIG]
... のすべてを満たすなら、
== [366] [[最適AppCache]]から[VAR[応答]]の[F[URL]]で識別されるエントリーを得ます。
== [367] そのエントリーが [[foreign]] でないなら、
=== [368] [VAR[応答]]を、そのエントリーの[[応答]]に設定します。
=== [[利用者]]に対して失敗したこととキャッシュを使うことを示して構いません。
= [369] '''Fallback for fallback entries''':
[FIG(list)[
- [VAR[応答]]を [[AppCache]] から [[fetch]] しなかった場合で、
- [VAR[要求]]の[F[メソッド][要求メソッド]]が [CODE(HTTP)@en[[[GET]]]] で、
- [VAR[応答]]の[F[URL]]が [[relevant application cache]] の [[fallback namespace]]
に一致する場合で、
- その[[最適AppCache]]の [[online whitelist]] に[VAR[応答]]の[F[URL]]と[[同じ起源]]の [[URL]] を持ち、
[VAR[応答]]の[F[URL]]の先頭と一致するようなエントリーが無く、
- [VAR[取り消し]]フラグが理由 [[end-user abort]] で設定されておらず、
- [VAR[応答]]が[[ネットワークエラー]]か[VAR[応答]]の[F[状態][状態符号]]が非[[OK状態]]
]FIG]
... のすべてを満たすなら、
== [424] [[最適AppCache]]の [[fallback namespace]] に対する [[fallback resource]] を得ます。
== [425] そのエントリーが [[foreign]] でないなら、
=== [426] [VAR[応答]]を、そのエントリーの[[応答]]に設定します。
=== [427] [[利用者]]に対して失敗したことと [[fallback resource]] を使うことを示して構いません。
= [428] [[navigate応答の処理]] (>>26) を実行します。
[FIG(list members)[

: [VAR[要求]] : [VAR[要求]]
: [VAR[応答]] : [VAR[応答]]
: [VAR[閲覧文脈]] : [VAR[閲覧文脈]]
: [VAR[始点閲覧文脈]] : [VAR[始点閲覧文脈]]
: [VAR[ナビゲーション型]] : [VAR[ナビゲーション型]]
: [VAR[予約済み環境]] : [VAR[予約済み環境]]
: [VAR[現職navigateする起源]] : [VAR[現職navigateする起源]]
: [VAR[活性文書navigateする起源]] : [VAR[活性文書navigateする起源]]
: [VAR[砂箱フラグ群]] : [VAR[砂箱フラグ群]]

]FIG]
]FIG]

[489] ここで、[[HTTPリダイレクト]]の場合に [[navigate]] の一部分を繰り返し (再帰的に)
実行する形になっています。 [[navigate]] における [[HTTPリダイレクト]]の取り扱いは、
[[素片識別子]]の取り扱いなど、細部が微妙に [[navigate]] 以外の [[fetch]]
での取り扱いと異なっています。

[490] [[URL]] の範囲の検査 (>>491) もここで行われる必要があります。

[591] 
[[HSTS]] や [[Mixed Content]] のような [[navigate]]
以外との共通の処理は、
[[fetch]]
内部で実行されます。

[HISTORY[
[370] 以前は[[安全なメソッド]]と [CODE(HTTP)@en[POST]] の場合を除き、
[[リダイレクト]]先も[[同じ起源]]でなければエラーとしてそれ以上処理しないことになっていました。
[[WF2]] 時代には[[フォームの提出]]で [CODE(HTTP)@en[PUT]] や [CODE(HTTP)@en[DELETE]]
を使って [[navigate]] できました。 [[Opera]] ([[Presto]]) がこれを実装していました。
しかし現在では [CODE(HTTP)@en[GET]] と [CODE(HTTP)@en[POST]]
でしか [[navigate]] する方法はありません。
]HISTORY]

* 応答の処理

[26] [VAR[要求]]、[VAR[応答]]、[VAR[閲覧文脈]]、[VAR[始点閲覧文脈]]、
[VAR[ナビゲーション型]]、[VAR[予約済み環境]]、
[VAR[砂箱フラグ群]]に関する[DFN[[RUBYB[navigate応答の処理]@en[process a navigate response]]]]は、次のようにします。

[FIG(steps)[
= [25] [VAR[取り消し]]フラグが設定されていれば、終わりとします (>>109 へ)。
= [52] それ以外で、
[FIG(list)[
- [435] [VAR[応答]]が[[ネットワークエラー]]
- [441] 
@@ [CODE(HTTP)@en[X-Frame-Options:]] 違反
- [442] [VAR[要求]]、[VAR[応答]]、[VAR[ナビゲーション型]]、[VAR[始点閲覧文脈]]、
[VAR[閲覧文脈]]について
[[Should navigation response to navigation request of type from source in target be blocked by Content Security Policy?]]
が [CODE[Blocked]] を返す場合
]FIG]
... のいずれかの場合、
== [440] [[非文書表示]] (>>47) によることとします [SRC[>>12]]。
== [527] [VAR[予約済み環境]]について[[環境廃棄手順群]]を実行します [SRC[>>12]]。
= [51] それ以外で、[VAR[応答]]の[F[状態][状態符号]]が [CODE(HTTP)[204]] か [CODE(HTTP)[205]]
なら、終わりとします (>>109 へ) [SRC[>>12]]。
= [53] それ以外で、[VAR[応答]]が [CODE(HTTP)@en[[[Content-Disposition:]] [[attachment]]]] 
なら、[[ダウンロード]]とします [SRC[>>12]] ([VAR[閲覧文脈]]外の処理 >>48)。
= [158] それ以外なら、
[VAR[砂箱フラグ群]]について[[MIME型]]依存の処理 (>>44) に進みます [SRC[>>12]]。
]FIG]

;; [157] [[navigate応答の処理]]は、[[navigate]] 本体の他に、 
[[[CODE(URI)@en[javascript:]] URLへのnavigate]] からも呼び出されます。

[183] [[Webブラウザー]]によっては、[VAR[応答]]の[F[状態][状態符号]]が
[CODE[4[VAR[xx]]]] や [CODE[5[VAR[xx]]]] で[F[本体][応答本体]]が一定サイズ以下の時、
[[非文書表示]]とすることがあります (>>134)。

[408] おそらく[[既読化]]もこの段階で行われると思われます。
[[既読化]]には[VAR[新しい[[資源]]]]の[F[URL]]や[VAR[応答]]の[F[URL][応答のURL]]を引き渡します。

@@ [[リダイレクト]]前の [[URL]] の[[既読化]]はいつの時点か?

[HISTORY[
[132] 2016年6月の改訂までは次のような規定がありましたが、削除されました。

[FIG(list)[
- [27] ここで、[[利用者エージェント]]が認識できる [[challenge]] を含まない
[CODE(HTTP)[[[401]]]] [[応答]]は、 [CODE(HTTP)[[[200]]]] 
[[応答]]同様に扱わなければ[['''なりません''']] [SRC[>>12]]。
- [28] [[利用者エージェント]]は [CODE(HTTP)[[[401]]]] [[応答]]で認識できる [[challenge]]
を含む場合であっても、[[応答]]を表示した上で、
非[[モーダルダイアログ]]によって[[ログイン]]できるようにしても構いません [SRC[>>12]]。
]FIG]

[184] [[TLSクライアント認証]]のダイアログの処理は [[fetch]] 側で規定されています。
[CODE(HTTP)[401]] や [CODE(HTTP)[407]] の[[HTTP認証ダイアログ]]の処理は、
以前より明確な規定はありませんが、将来的に [[fetch]] 側で規定されるものと思われます。

;; [284] [[クライアント認証]]のダイアログは、処理が更に進んだ[[応答]]の受信の後の方でも表示されることがあります。

[54] 改訂前は [[HTML Standard]] は [[HTTP]] の規定に委ねており、理論上はこれら以外にも
[[HTTPヘッダー]]等の指示に基づく動作を行う余地が残されていました (が[[仕様書]]の[[注釈]]で、
他のものは考えつかないと記されていました)。 [[fetch]] との統合と明確化により、
そうした曖昧な規定は削除されて動作が明確になりました。
]HISTORY]

[104] 
[[Chrome]] は [[navigate]] で [CODE[401]] が返されると空白ページを開いて[[モーダルダイアログ]]を表示します。
前からこんな挙動でしたっけ?
[TIME[2021-12-29T08:03:52.00Z]]

* MIME 型依存の処理

[44] [[navigate]] により [[fetch]] (相当) を行い最終的に処理するべき[[資源]]が確定したら、
その[[資源]]の[[MIME型]]によって適切な処理を行います。

[45] ここで [[MIME型]]は、 [[sniffed MIME type]] を使わなければ[['''なりません''']]
[SRC[>>12]]。

;; [[Fetch Standard]] と [[MIME Sniffing]] の規定に基づき、 [[HTTP]] [CODE(HTTP)@en[[[Content-Type:]]]]
[[ヘッダー]]を無視することがあります。

[46] [[利用者エージェント]]は、[[MIME型]]と設定に基づき、
[VAR[閲覧文脈]],
[VAR[型]],
[VAR[要求]],
[VAR[応答]],
[VAR[現職navigateする起源]],
[VAR[活性文書navigateする起源]],
[VAR[砂箱フラグ群]]について、
次のいずれかの処理を行わなければ[['''なりません''']] [SRC[>>12]]。
[FIG(list)[
- [VAR[閲覧文脈]]内で[[文書]]を[[レンダリング]]する (>>30)
- [VAR[閲覧文脈]]内で非[[文書]]を表示する (>>47)
- [VAR[閲覧文脈]]に影響しない処理を行う (>>48)
]FIG]

[50] いずれを選択するかは実装や設定に依存します (>>206)。 [[HTML Standard]]
仕様上「設定により」となっており、完全には規定されていませんが、
実際上は任意の動作が許されているわけではありません。例えば
[CODE(MIME)@en[[[text/html]]]] を常に[[ダウンロード]]として扱うような実装は
[[Web互換]]とは言えません。

[68] [[著者]]は、[[Webブラウザー]]の実装や設定によって挙動が変わり得る
[[MIME型]]を使わないよう、使う場合は特定の挙動を仮定しないよう注意するべきでしょう。

[EG[
[69] 例えば [[PDF]] が[[プラグイン]]により表示されるか、[[外部アプリケーション]]により表示されるか仮定するべきではありません。
]EG]

[399] この段階に達した時点で、 [CODE[webNavigation]] [[API]] の
[CODE[onCommitted]] を呼び出せるものと思われます。
[VAR[遷移型]]と[VAR[遷移修飾子群]]と現在時刻を引き渡します。

* 閲覧文脈内の文書表示

[30] [[閲覧文脈]]内に内容を[[レンダリング]]する方法は、
次の各 [[MIME型]]について規定されています。
[FIG(switch)[
:[31] [[HTML文書]]: [CODE(MIME)@en[[[text/html]]]] [SRC[>>12]]
:[32] [[XML文書]] (>>33 も参照) :[[明示的対応XML型]]以外の [[XML MIME型]] [SRC[>>12]]
:[35] [[平文]] :[CODE(MIME)@en[[[text/plain]]]] や [[JSON]] などの[[テキストファイル]] ([[明示的対応JSON型]]以外) [SRC[>>12]]
:[37] [[媒体]]: [[利用者エージェントが対応]]している[[画像形式]]、[[動画形式]]、[[音声形式]] [SRC[>>12]]
:[38] [[プラグイン]]: [[外部アプリケーション]]を使って[[閲覧文脈]]内に内容を[[レンダリング]]する型 [SRC[>>12]]
]FIG]

;; [216] 実際の[[Webブラウザー]]は、ごく限られた [[XML MIME型]]を除き、ほとんどの
[[XML MIME型]]を ([[XML]] としてではなく) 未対応として扱うことがあります。

[HISTORY[
[36] [CITE[[[HTML Standard]]]] では 
[CODE(MIME)@en[[[multipart/x-mixed-replace]]]] 
の処理方法も規定されています [SRC[>>12]] が、
最近の [[Webブラウザー]]の多くからは削除されています。
([[画像形式]]としての [[MJPEG over HTTP]] には対応していますが、 [[navigate]]
では対応しないようになっています。)
]HISTORY]

;; [215] [[Webブラウザー]]によってはこの他にも独自の [[MIME型]]の処理を実装している場合があります。
例えば [[IE]] や [[Chrome]] は [[MHT]] に対応しています。

** 閲覧文脈内の文書の作成

[70] 
[[navigate]]
の結果として[[閲覧文脈]]で表示する[[文書]]は、
[VAR[[[閲覧文脈]]]],
[VAR[[[要求]]]],
[VAR[[[応答]]]],
[VAR[現職navigateする起源]],
[VAR[活性文書navigateする起源]],
[VAR[砂箱フラグ群]]について、
次のように作成します。
[[HTML文書]]
[WEAK[([DFN[an HTML document is to be loaded]] の処理)]]
や[[平文]]の場合は、次のような[[タスク]]を[[ネットワークタスク源]]で[[キュー]]に追加しなければ[['''なりません''']] [SRC[>>12]]。
[[XML文書]]の場合も、次のように行います [SRC[>>12]]。
[[媒体]]や[[プラグイン]]の場合も、次のような[[タスク]]を[[ネットワークタスク源]]で[[キュー]]に追加する[['''べきです''']] [SRC[>>12]]。
[[非文書表示]]の場合 (>>47) も、
[VAR[要求]]、
[VAR[応答]]、
[VAR[取り消し]]などについて、
次のように行う[SHOULD[べき]]です。

[FIG(steps)[
= [135] [VAR[取り消し]]フラグが設定されていれば、何もしない処理 (>>48) に移り、こちらはここで終わります。
= [102] 
[VAR[文書]]を、
[[文書オブジェクトの作成と初期化]] (>>593) の結果に設定します。
[SRC[>>12]]
[FIG(list members)[

: [VAR[[[型][文書の型]]]] :
[[HTML文書]],
[[平文文書]],
[[媒体文書]],
[[プラグイン文書]],
[[非文書表示]]の場合 [CODE[html][HTML文書]],
[[XML文書]]の場合 [CODE[xml][XML文書]]
: [VAR[内容型][contentType]] :
[[HTML文書]], [[非文書表示]]の場合 [CODE[text/html]],
それ以外の場合[VAR[型]]
: [VAR[要求]] : [[非文書表示]]の場合 [CODE[null]]、それ以外の場合[VAR[要求]]
: [VAR[応答]] : [[非文書表示]]の場合 [CODE[null]]、それ以外の場合[VAR[応答]]
: [VAR[閲覧文脈]] : [VAR[閲覧文脈]]
: [VAR[現職navigateする起源]] : [[非文書表示]]の場合 [CODE[null]]、それ以外の場合[VAR[現職navigateする起源]]
: [VAR[活性文書navigateする起源]] : [[非文書表示]]の場合 [CODE[null]]、それ以外の場合[VAR[活性文書navigateする起源]]
: [VAR[砂箱フラグ群]] : 
[[非文書表示]]の場合[[空集合]]、
それ以外の場合[VAR[砂箱フラグ群]]

]FIG]
= [197] [VAR[[[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]]]が設定されていれば、
[[文書]]を[[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]とします。
= [192] [VAR[[[reload override flag]]]] が[[真]]なら、
== [193] [VAR[新しい[[文書]]]]の [[reload override flag]] を、[[真]]に設定します [SRC[>>191]]。
== [194] [VAR[新しい[[文書]]]]の [[reload override buffer]] を、[VAR[新しい[[資源]]]]の[[応答]]の[[本体]]の[[文字列]]に設定します [SRC[>>191]]。
= [417] [VAR[新しい[[文書]]]]の[F[時刻起源]]を、[VAR[時刻起源]]に設定します [SRC[>>416]]。
= [105] [[構文解析器]][VAR[構文解析器]]を作成し (>>77)、
[VAR[新しい[[文書]]]]を関連付けます [SRC[>>12]]。
= [286] [VAR[[[navigate]] する[[閲覧文脈]]]]が[[入れ子閲覧文脈]]の場合、 [SRC[>>285]]
== [287] [VAR[[[navigate]] する[[閲覧文脈]]]]の[[非保安要求ポリシー]]が「格上げする」なら、
=== [288] [VAR[新しい[[文書]]]]の[[現職設定群オブジェクト]]の[[非保安要求ポリシー]]を、「格上げする」に設定します。
=== [289] [VAR[[[navigate]] する[[閲覧文脈]]]]の[[非保安navigate格上げ集合]]の各値について、
[VAR[新しい[[文書]]]]の[[現職設定群オブジェクト]]の[[非保安navigate格上げ集合]]に追加します。
= [223] 必要があれば、[[ブラウザー拡張]]によって指定された [[CSS]]
を読み込んだり、[[内容スクリプト]]を実行したりします。
= [106] これより後、[[スクリプト]]の実行や [[stop parsing]] よりも前に、
(他のモードに移行 (>>33) したり[VAR[取り消し]]されたりしていなければ)
[[セッション履歴を新しいページで更新]] (>>95) を実行します [SRC[>>12]]。
]FIG]

;; [253] [[初期「[CODE(URI)@en[about:blank]]」文書]]なら
[CODE(DOMi)@en[[[Window]]]] [[オブジェクト]]が新しい[[文書]]に再利用されます。
これは [CODE(DOMi)@en[[[Window]]]] と[[文書]]との一対一対応関係が崩れる例外の1つです。

;; [254] 仕様書上は[[セッションストレージ領域]]の初期化に関する規定 [SRC[>>258]]
がありますが、実際上は [CODE(DOMa)@en[[[sessionStorage]]]] の最初の利用時まで遅延させられます。

[79] [[XML文書]]の場合[[タスクキュー]]に追加しなければならないと仕様書には明記されていませんが、
おそらくそうすることが想定されていると思われます。もっともそうしないとしても[[著者]]から違いを観測できるのか不明です。できたとしても困難と思われます。

[75] [[MIME型]]の設定においては、[[XML文書]]以外の時は[VAR[新しい[[文書]]]]の
[[HTML文書]]フラグを設定しなければ[['''なりません''']] [SRC[>>12]]。
[[プラグイン]]の時は[[プラグイン文書]]フラグを設定する[['''べきです''']] [SRC[>>12]]。 
また[VAR[新しい[[文書]]]]の[[内容型]]を [[HTML文書]]なら [CODE(MIME)@en[[[text/html]]]] に、
[[平文]]なら [[sniffed MIME type]] に設定しなければ[['''なりません''']] [SRC[>>12]]。
[[媒体]]や[[プラグイン]]なら [[sniffed MIME type]] に設定する[['''べきです''']] [SRC[>>12]]。

;; [76] [[XML文書]]の場合の[[文書]]の[[内容型]]の設定の規定はなぜかありません。

[235] 更に [[sniffed type]] が [CODE(MIME)@en[[[image/svg+xml]]]] であれば、
その旨のフラグ ([F[[[SVG]] [[navigate]] フラグ]]) を設定する必要があります。

;; [CODE(DOMm)@en[[[getSVGDocument]]]] で参照されます。

[593] 
[DFN[[RUBYB[文書オブジェクトの作成と初期化][create and initialize a [CODE[Document]] object]]]]は、
[[型][文書の型]][VAR[型]],
[[MIME型]][VAR[内容型]],
[VAR[[[要求]]]],
[VAR[[[応答]]]],
[VAR[[[閲覧文脈]]]],
[VAR[現職navigateする起源]],
[VAR[活性文書navigateする起源]],
[[環境]]または[CODE[null]][VAR[予約済み環境]],
[VAR[砂箱フラグ群]]について、
次のようにします [SRC[>>12]]。

[FIG(steps)[
= [251] 
[VAR[最終砂箱フラグ群]]を、
[VAR[砂箱フラグ群]]と[VAR[応答]]の [F[forced sandboxing flag set]]
の[[合同]]に設定します。
= [605] 
[VAR[起源]]を、
[VAR[閲覧文脈]],
[VAR[要求]]の[F[URL][要求URL]],
[VAR[最終砂箱フラグ群]],
[VAR[現職navigateする起源]],
[VAR[活性文書navigateする起源]]について、
[[起源を決定]]した結果に設定します。
= [484] 
[VAR[機能ポリシー]]を、
[VAR[[[navigate]] する[[閲覧文脈]]]]、
[VAR[起源]]、
[VAR[応答]]について[[応答から機能ポリシーを作成]]した結果に設定します。
= [248] 
[FIG(list)[
- [VAR[[[navigate]] する[[閲覧文脈]]]]の[F[[[セッション履歴]]]]が[[初期「[CODE(URI)@en[about:blank]]」文書]][VAR[初期文書]]の[[セッション履歴エントリー]]しか含まない
- [VAR[[[置換有効]]]]が[[真]]
- [VAR[初期文書]]の[F[起源][文書の起源]]と[VAR[起源]]が[[同じ起源]]
]FIG]
... のすべてを満たすのでは''ない''場合、
== [336] 
[VAR[realm実行文脈]]を、
[[新しいJavaScript realmを作成]]した結果に設定します。
[FIG(list members)[

: [VAR[[[大域オブジェクト]]]] : 新しい [CODE(DOMi)@en[[[Window]]]]
: [VAR[大域[CODE[this]]束縛]] : [VAR[[[navigate]] する[[閲覧文脈]]]]の [F[[CODE(DOMi)@en[WindowProxy]]]]

]FIG]
== [337] [VAR[realm実行文脈]]と[VAR[予約済み環境]]について[[閲覧文脈環境設定群オブジェクトの設定]]を実行します。
= [606] 
[VAR[文書]]を、
新しい[[文書]]に設定します。
[FIG(list members)[

: [F[型][文書の型]] : [VAR[型]]
: [F[内容型][contentType]] : [VAR[内容型]]
: [F[起源][文書の起源]] : [VAR[起源]]
: [F[活性砂箱化フラグ集合]] : [VAR[最終砂箱フラグ群]]

]FIG]
= [564] [VAR[文書]]の[F[機能ポリシー]]を、[VAR[機能ポリシー]]に設定します。
= [553] 
[VAR[要求]]が [CODE[null]] で''ない''場合、
== [554] 
[VAR[文書]]の[F[URL][文書の番地]]を、
[VAR[要求]]の[F[現在URL]]に設定します。
[SRC[>>12]]
= [555] 
それ以外の場合、
== [556] 
[VAR[文書]]の[F[URL][文書の番地]]を、
[VAR[応答]]の [F[URL][応答URL]]
に設定します。
[SRC[>>12]]
=
[NOTE[
[185] [[リダイレクト]]を辿った場合には、最終的な [[URL]] に設定されます。


[329] [CODE(URI)@en[view-source:]] も参照。

]NOTE]
= [279] [VAR[文書]]の[F[[[HTTPS状態]]]]を、[VAR[応答]]の[F[[[HTTPS状態]]]]に設定します。
= [378] [VAR[文書]]の[F[参照元ポリシー]]を、[VAR[応答]]について
[CODE(HTTP)@en[Referrer-Policy:]] [[ヘッダー]]を構文解析した結果たる[[参照元ポリシー]]に設定します。
= [141] [VAR[文書]]、
[VAR[要求]]、
[VAR[応答]]について、
[[[CODE(DOMi)@en[Document]]のCSPリストの初期化]]をします。
= [379] [VAR[要求]]の[F[参照元]]が [CODE[no-referrer]] で''ない''場合、
== [250] [VAR[文書]]の[F[参照元]]を、[VAR[要求]]の[F[参照元]]に設定します。
= [510] [VAR[更新]]を、[VAR[応答]]の
[CODE(HTTP)@en[Refresh:]] [[ヘッダー]]の値に設定します。
= [511] [VAR[更新]]が [CODE[null]] 以外の場合、
== [512] [VAR[文書]]と[VAR[更新]]を[[同型復号]]した結果について、
[[共有宣言的更新手順群]]を実行します。
= [567] 
[VAR[新しい[[閲覧文脈]]]]の[F[厳密混合内容検査フラグ]]が[[真]]の場合、
[SRC[>>568]]
== [569] 
[VAR[文書]]の[F[厳密混合内容検査フラグ]]を、
[[真]]に設定します。
= [607] 
[VAR[文書]]を返します。

]FIG]

[HISTORY[
[604] 
[TIME[令和元(2019)年][2019]]までは、
作成済みの[DFN[[RUBYB[文書オブジェクトの初期化]@en[initialize the document object]]]] [SRC[>>246]] 
の手順群として規定されていました。
]HISTORY]


** 文書木の構築

[77] 表示する[[文書木]]を構築するために使う[[構文解析器]][VAR[構文解析器]]は、 
[[HTML文書]]なら[[HTML構文解析器]]、[[XML文書]]なら[[XML構文解析器]]です。
ただし[[平文]]の場合は[[テキストファイルのDOM構築]]方法を使います。
[[媒体]]の場合は[[構文解析器]]のかわりに[[媒体文書]]のDOMを構築し、
[[プラグイン]]の場合は[[構文解析器]]のかわりに[[プラグイン文書]]のDOMを構築します。
[[非文書表示]]の場合は[[構文解析器]]のかわりに任意の [[DOM]] を構築できます (>>84)。

;; [72] [VAR[構文解析器]]は、 [[fetch]] によって得られた[[応答]]の [[MIME型]]に含まれる[[文字符号化]]の指定を入力として受け取ります。
ここでの [[MIME型]]は、 [[sniffed MIME type]] ではありません [SRC[>>12]]。

[71] [[process response body]] は、次のようにしなければ[['''なりません''']]。
[FIG(steps)[
= [312] [VAR[構文解析器]]の[[入力バイト列]]に受信した[[バイト列]]を連結します [SRC[>>12]]。
= [313] [VAR[構文解析器]]の処理を行います [SRC[>>12]]。
]FIG]

[73] [[process response end-of-file]] は、次のようにしなければ[['''なりません''']]。
[FIG(steps)[
= [314] [VAR[構文解析器]]の入力として暗黙の [[EOF]] 文字を与えます [SRC[>>12]]。
= [315] [VAR[構文解析器]]の処理を行います [SRC[>>12]]。
]FIG]

[316] [[process response body]] と [[process response end-of-file]]
を実行する[[ネットワークタスク源]]の[[タスク]]の[F[実行可否判断]]は、
次のようにしなければ[['''なりません''']]。
[FIG(steps)[
= [319] [VAR[構文解析器]]の[F[[[字句化器]]をブロック]]フラグが設定されていれば、
== [320] [[偽]]を返します。
= [318] それ以外なら、
== [317] [[真]]を返します。
]FIG]

;; [321] [[構文解析器]]の [CODE(HTMLe)@en[[[script]]]] [[要素]]の処理により、
[[字句化]]を行う[[タスク]]の処理が中断されることがあります。
[CODE(HTMLe)@en[[[script]]]] を参照。

[74] [VAR[構文解析器]]は、構文解析中のいずれかのタイミングで[[文書の文字符号化]]を設定します。

[78] [[構文解析器]]や[[プラグイン文書]]の構築処理は、
[[文書要素]]を[[文書に挿入]]するタイミングで
[[AppCache選択アルゴリズム]]を実行します [SRC[>>12]]。

;; [221] [[文書要素]]は、[[XML構文解析器]]が [[XML]] [[整形式制約]]違反を通知するものかもしれません。 ([[XML構文解析器]]参照。)

[222] [[Webブラウザー]]によっては、[[ブラウザー拡張]]の[[内容スクリプト]]を[[文書要素]]の最初の挿入時点で実行するものもあります。

[HISTORY[

[33] [[XML文書]]の場合、[[文書要素]]の[[名前空間]]によっては他の方法 (>>47、>>48)
で表示することにしても構いません [SRC[>>12]]。

[EG[
[34] 例えば[[フィード]]は、[[XML]] として [[DOM]] を表示するのではなく、
[[Webブラウザー]]組み込みの[[フィードビューアー]]により表示できます [SRC[>>12]]。
]EG]

;; [82] その場合、(少なくても仕様書のアルゴリズム上は) 作成されかけた
[[XML文書]]オブジェクトに[[著者]]がアクセスする方法はありません。

;; [118] 仕様書にはありませんが、理論上は [[abort a document]] を実行するべきかもしれません。
([[文書要素]]より前に [CODE(XML)@en[[[xml-stylesheet]]]] [[処理指令]]の [[fetch]]
が行われていたら、 [[abort a document]] により取り消されます。)

;; [171] [[IE]] は [CODE(MIME)@en[[[application/atom+xml]]]] や
[CODE(MIME)@en[[[application/rss+xml]]]] を[[フィードビューアー]]で表示するのに加え、
[CODE(MIME)@en[[[text/xml]]]] の時にバイト列を [[sniffing]] して[[フィード]]かどうか判定し、
[[フィードビューアー]]で表示します [SRC[>>170]]。 [[Firefox]]
も同様に [[sniffing]] を行います [SRC[>>172]]。厳密には [[HTML Standard]]
に沿った動作ではありません。
[REFS[
- [170] [CITE@en[Windows RSS Publisher's Guide (work-in-progress) - Microsoft RSS Blog - Site Home - MSDN Blogs]] ([TIME[2015-05-04 11:42:57 +09:00]] 版) <http://blogs.msdn.com/b/rssteam/archive/2005/08/02/publishersguide.aspx>
- [172] [CITE@en-US[XSL Transformations in Mozilla FAQ | MDN]] ([TIME[2014-03-22 05:56:30 +09:00]] 版) <https://developer.mozilla.org/en-US/docs/XSL_Transformations_in_Mozilla_FAQ>
]REFS]

[560] 
この規定に従う実装は存在しないとして、
[TIME[平成31年2月][2019-02]]に廃止されました。
[SRC[>>559]]

]HISTORY]

[229] [CODE(XML)@en[[[xml-stylesheet]]]] により [[XSLT]]
[[スタイルシート]]が指定されているときは、 [[XSLT]] によって変換したものを
[[DOM]] として表示することになります。

;; これがどのように処理されるかはどこでも規定されていません。 [[フィードリーダー]]モードになることがあるのか、
[[unstyle document]] 表示もあるのか、どの時点で表示が切り替わるのか、
[[スクリプト]]から何にアクセスできるのかなど謎は多いです。

[EG[
[231] >>143 を [[Chrome]] は [[XSLT]] [[スタイルシート]]により表示しますが、
[[Firefox]] と [[IE]] は[[フィード]]として表示するようです。 [CODE(MIME)@en[[[text/xml]]]]
で、
[PRE(XML code)[
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/feedstylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>日本のセキュリティチーム</title>
]PRE]
... から始まっています。

[REFS[
- [143] [CITE@en[日本のセキュリティチーム]] ([TIME[2015-11-02 17:00:31 +09:00]] 版) <http://blogs.technet.com/b/jpsecurity/rss.aspx>
]REFS]
]EG]

[173] [[CSS]] などのない [[XML文書]] ([[unstyle document]])は、
その[[木構造]]が表示されます。

;; これは [[unstyled document view]] と呼ばれる [[DOM]]
の特別な表示モードなので、非文書表示モードではありません。

[94] [[媒体]]、[[プラグイン]]、 >>33 により非 [[DOM]] 表示に切り替える場合には、
仕様書上は [[navigate]] による [[fetch]] はそのまま放置され、
改めて [CODE(HTMLe)@en[[[img]]]] [[要素]]などで [[fetch]] が発生することになっています。
実際には [[Webブラウザー]]の[[キャッシュ]]により、あるいは何らかの特別な仕組みにより、
[[navigate]] による [[fetch]] の結果あるいは経過が[[媒体]]の表示処理や[[プラグイン]]等に引き渡される可能性もあります。

@@ [[CSP]] [[enforce]] / [[monitor]]

** favicon

[267] [[最上位閲覧文脈]]の場合、 [[favicon]] の取得も行われます。

[249] [[仕様書]]では明確なタイミングは規定されていないのですが、
[CODE(HTMLe)@en[link]] [[要素]]で指定されていればそれを使い、
指定されていない場合は [CODE[/favicon.ico]] にアクセスするため、
どちらを使うか判定できる十分な[[構文解析]]が進んだ段階ということになります。

;; [304] [[テキスト文書]]や[[媒体文書]]や[[プラグイン文書]]でも [[favicon]]
は参照されます。

[301] [[非文書表示]]の場合、特に[[ネットワークエラー]]の場合は
[CODE[/favicon.ico]] へのアクセスは行わないのが適切と思われます。

;; [302] [[Chrome]] はアクセスしないように見えますが、すべての場合にそうなのかは不明です。
[TIME[2017-05-20T04:03:48.00Z]]

* 閲覧文脈内の非文書表示

[47] [[閲覧文脈]]内であっても [[DOM]] を[[レンダリング]]するのではなく、
専用ビューアーやエラーメッセージなど特別なものを表示する場合があります。

;; [49] 仕様書では[[閲覧文脈]]内に表示することを“[RUBYB[行内]@en[inline]]”と言っています。

[59] [[fetch]] (相当) を行う前にこちらの処理方法に移行する場合と、
[[fetch]] 結果をこちらの方法で処理する場合があります。

[EG[
[23] 例えば [[URL scheme]] に対応していないエラーを表示部に示す場合や、
[[登録済みプロトコル取扱器]]を[[利用者]]に選択する画面を表示部に示す場合があります。
(選択した取り扱い器を実行する場合は、 [[navigate]] を改めて実行することになります。)
[SRC[>>12]]
]EG]

[EG[
[60] 例えば大多数の [CODE(URI)@en[[[about:]]]] [[URL]] のように [[fetch]]
ではアクセスできない特別な [[Webページ]]を表示させる場合が該当するかもしれません。

[131] [CODE(URI)@en[[[http:]]]] [[URL]] から[[リダイレクト]]で [CODE(URI)@en[[[about:]]]]
[[URL]] が示された場合や [CODE(URI)@en[[[http:]]]] ページの[[ハイパーリンク]]からの
[CODE(URI)@en[[[file:]]]] への [[navigate]] や[[フレーム]]による [[navigate]] のように、
特別なページの表示は文脈によって認められないこともあります。
>>174 も参照。
]EG]

[EG[
[39] 例えば内容を ([[DOM]] ではなく) 専用の方法で表示する場合、
[[MIME型]]に対応していないエラーを表示部に示す場合や、
[CODE(DOMm)@en[registerProtocolHandler]] で登録された取り扱い器を[[利用者]]に選択する画面を表示部に示す場合があります。 
(選択した取り扱い器を実行する場合は、 [[navigate]] を改めて実行することになります。)
]EG]

[EG[
[81] [[Webブラウザー]]と[[MUA]]が統合された製品で、それぞれが別の[[窓]]を開くのではなく、
[[閲覧文脈]]内に [[MUA]] 機能が表示されるような場合は、 [[MUA]]
機能の表示は本項に該当しそうです。
]EG]

[EG[
[92] かつては[[ネットワークエラー]]を[[ダイアログ]]で表示する [[Webブラウザー]]もありましたが、
現在では多くの [[Webブラウザー]]が行内表示を使っています。
]EG]

[EG[
[93] 本来の内容の代わりに [[Safe Browsing]] エラーが[[閲覧文脈]]内に表示されることもあります。
]EG]

[EG[
[130] 仕様書上明記はされていませんが、[[リダイレクト]]ループを検出したら[[ネットワークエラー]]として表示する必要があります。
]EG]

[EG[
[203] [[入れ子閲覧文脈]]の深さが限界を超えたら、エラーページを表示するべきかもしれません。
]EG]

[EG[

[263] 
[[Chrome]] は[[シークレットウィンドウ]]で[[素のHTTP]]の頁を開こうとすると、
かわりにエラー画面を表示します。それでも表示するボタンを押すと通常の
[[navigate]] になります。

]EG]

[EG[
[394] [[Firefox]] は [[MIME型]] [CODE(MIME)@en[application/http-index-format]] の表示に対応しています。
[[FTP]] の[[ディレクトリー]]の表示に使われていますが、それ以外でも使うことができます。
]EG]

[83] 非 [[DOM]] の行内内容を[[閲覧文脈]]に表示する場合でも、[[文書]]の作成は
[[DOM]] の表示の場合と同じく行います (>>77)。

[84] [[DOM]] の構築の段階では、任意の[[DOM木]]を作成して構いません 
([CODE(DOMi)@en[[[Document]]]] のみ でも構いません)。いずれにしても
[[AppCache選択アルゴリズム]]を[[マニフェスト]]無しで実行しておかなければ[['''なりません''']]。
また完了時に [[stop parsing]] を実行しなければ[['''なりません''']] [SRC[>>12]]。

[85] [[レンダリング]]は通常の規則で [[DOM]] を表示しても構いませんし、
特別な方法を使っても構いません [SRC[>>12]]。

[96] 仕様書上は [[navigate]] による [[fetch]] が行われた場合、そのまま放置されています。
実際には [[Webブラウザー]]の[[キャッシュ]]により、あるいは何らかの特別な仕組みにより、
[[navigate]] による [[fetch]] の結果あるいは経過が非 [[DOM]] 表示の処理へと引き渡される可能性もあります。

[307] 次のような [[URL scheme]] について[[非文書表示]]が使われています。
[FIG(short list)[
- [CODE(URI)@en[[[about:]]]] のほとんど
- [CODE(URI)@en[[[chrome:]]]] ([[Chrome]])
- [CODE(URI)@en[[[opera:]]]]
- [CODE(URI)@en[[[view-source:]]]]
]FIG]

[134] [[Webブラウザー]]によっては、[VAR[応答]]の[F[状態][状態符号]]が
[CODE[4[VAR[xx]]]] や [CODE[5[VAR[xx]]]] で[F[本体][応答本体]]が一定サイズ以下の時、
[[[F[本体][応答本体]]を[[文書]]として表示するかわりに、
[[Webブラウザー]]側のエラーを[[非文書表示]]することがあります。

[[Webブラウザー]]側としては、[[サーバー]]ソフトウェアから自動生成されたような
(しばしば[[ローカライズ]]されていない) 不親切な定形エラーメッセージを表示するくらいなら、
より[[利用者]]にわかりやすいエラーをかわりに表示したいということなのでしょう。
これを不服に思う[[著者]]や[[サーバー]]ソフトウェアの開発者も少なく無いようで、
そのような判定をされないように[F[本体][応答本体]]に余分な[[詰め]]データを付け足すことがあります。

[375] 通常の [[DOM]] ではなく[[非文書表示]]とするのは、実装上の都合の他に、
セキュリティー上の理由もある場合があります。例えば、
[[ネットワークエラー]]の詳細は[[プライバシー]]に関わる情報を含むことがありますから、
たとえ同じ[[起源]]の他の通常の[[文書]]の[[スクリプト]]であっても、
アクセスできるべきではなさそうです。 (実際には、状況に応じて、
単に[[非文書表示]]であるだけでなく、[[不透明起源]]を持つものと扱うのがより安全かもしれません。)

[376] 場合によってはそれ以上の制約が必要かもしれません。例えば[[閲覧文脈]]が開かれた後、
[[利用者]]がそこで [[Webブラウザー]]の設定ページを開いたら、
外部の[[スクリプト]]からその [CODE(JS)@en[location.href]] への値の設定は無視するべきかもしれませんし、
[CODE(DOMm)@en[postMessage]] も
(設定ページ内の[[スクリプト]]が無視するだけでなく、[[Webブラウザー]]レベルで) 
完全に無視するべきかもしれません。

-*-*-

[271] [[非文書表示]]は、 [[navigate]] 開始以外でも生じることがあります。
例えば、 [[navigate]] の [[fetch]] の途中で [CODE[RST]] を受信した場合や、
[[応答]]の受信中に[[接続][HTTP接続]]が閉じられて[[ネットワークエラー]]として扱われる場合、
あるいは [[navigate]] に限らず [[Safe Browsing]] で[[陽性]]の [[fetch]] が実行された場合に、
表示中の文書が破棄されて[[非文書表示]]に差し替えられることになります。

* 履歴と素片識別子の処理

** ページ遷移が行われなかった場合

[163] [[素片識別子]]への [[navigate]] は、次のように行わなければ[['''なりません''']]
[SRC[>>12]]。

[FIG(steps)[
= [506] [VAR[エントリー]]を、新しい[[セッション履歴エントリー]]に設定します。
[FIG(list members)[
[FIGCAPTION[
[292] [[セッション履歴エントリー]]
]FIGCAPTION]
:[F[[[URL]]]]:[VAR[新しい[[資源]]]]の [F[URL]]
:[F[[[文書]]]]:[VAR[[[navigate]] する[[閲覧文脈]]]]の[[活性文書]]
:[F[[[題名]]]]:未設定
:[F[[[スクロール復元モード]]]]: [VAR[[[navigate]] する[[閲覧文脈]]]]の[F[[[セッション履歴]]]]の[F[[[現在エントリー]]]]の[F[[[スクロール復元モード]]]]
:その他:[VAR[新しい[[資源]]]]と [VAR[[[navigate]] する[[閲覧文脈]]]]の現在の状態による値
]FIG]
= [165] [VAR[[[navigate]] する[[閲覧文脈]]]]の[F[[[セッション履歴]]]]、
[VAR[エントリー]]、[VAR[置換有効]]について[[セッション履歴エントリーを挿入]]します。
= [168] [VAR[エントリー]]と[VAR[置換有効]]と [VAR[[[non-blocking events]]]] と
[VAR[[[reload-triggered navigation]]]] について、
[[履歴を探索]]します。 
= [402] [CODE[webNavigation]] API の [CODE[onReferenceFragmentUpdated]] を呼び出します。
[VAR[遷移型]]、[VAR[遷移修飾子群]]、現在時刻を引き渡します。 [SRC[仕様書なし]]
= [409] [VAR[新しい[[資源]]]]の [F[URL]] の[[既読化]]を行います。 [SRC[仕様書なし]]
= [169] 後片付け (>>109) に移ります。
]FIG]

;; [164] [[素片識別子へのスクロール]]は、[[履歴を探索]]する過程で行われます。

** ページ遷移が行われた場合

[95] [[閲覧文脈]]内に何らかの表示を行う場合には、ある程度処理が進んだ段階で、
[[セッション履歴を新しいページで更新]]します。

[97] 
[DFN[[RUBYB[セッション履歴を新しいページで更新]@en[[[update the session history with the new page]]]]]]するには、
次のようにします。
[SRC[>>12]] 

[FIG(steps)[

= [572] [VAR[旧文書]]を、
[VAR[[[navigate]] する[[閲覧文脈]]]]の[F[セッション履歴]]の[F[現在エントリー]]の[F[文書]]に設定します。
= [571] [[タスクをキューに追加]]します。
[FIG(list members)[

: [VAR[処理]] : [VAR[旧文書]]について、
次に示す処理 (>>99)
を実行します。
: [VAR[文書]] : [VAR[旧文書]]
: [VAR[[[タスクキュー]]]] : [[ネットワークタスク源]]

]FIG]

]FIG]

[99] 
[[タスク]]の処理は、
[VAR[旧文書]]について、
次のようにします。
[[navigate]] の[[引数]]である [VAR[[[navigate]] する[[閲覧文脈]]]]、[VAR[新しい[[資源]]]]、
[VAR[[[置換有効]]]]、[VAR[[[エントリー更新]]する[[エントリー]]]]と
[[navigate]] によって作成された[VAR[新しい[[文書]]]]を参照します。
また [[navigate]] の [VAR[[[mature]]]] フラグを設定します。

[FIG(steps)[
= [111] [VAR[旧文書]]について [[unload a document]] を実行します。
[SRC[>>12]]
= [127] [VAR[取り消し]]フラグが設定されていれば、
== 後片付け (>>109) に移り、こちらはここで終わります。 [SRC[>>12]]
= [112] [VAR[[[エントリー更新]]する[[エントリー]]]]があるなら、
== [VAR[[[エントリー更新]]する[[エントリー]]]]の[[文書]]およびそれと同じ[[文書]]を参照する他の[[エントリー]]の[[文書]]を[VAR[新しい[[文書]]]]に変更します。 [SRC[>>12]]
== [VAR[[[エントリー更新]]する[[エントリー]]]]へ
[VAR[[[reload-triggered navigation]]]] について[[履歴を探索]]します。 [SRC[>>12]]
=
[273] [VAR[新しい[[資源]]]]の [F[URL][要求URL]] が[VAR[[[navigate]] する[[閲覧文脈]]]]の[F[活性文書]]の[F[URL][文書の番地]]と[[等しい][URL等価]]なら、
==
[274] [[現在エントリー]]を、新しい[[セッション履歴エントリー]]で置換します [SRC[>>12]]。
[FIG(list members)[ [275] [[セッション履歴エントリー]]
: [F[資源]] : [VAR[新しい[[資源]]]]
: [F[文書]] : [VAR[新しい[[文書]]]]
: [F[スクロール復元モード]] : [CODE[auto][スクロール復元モード]]
: その他 : 関係する状態
]FIG]
==
[476] [[現在エントリー]]へ
[VAR[[[reload-triggered navigation]]]] について[[履歴を探索]]します [SRC[>>12]]。
= [113] そうでないなら、
== [233] [VAR[[[navigate]] する[[閲覧文脈]]]]の[F[[[セッション履歴]]]]に新しい[[セッション履歴エントリーを挿入]]します [SRC[>>12]]。
[FIG(list members)[
[FIGCAPTION[
[290] [[セッション履歴エントリー]]
]FIGCAPTION]
:[F[[[URL]]]]:
[VAR[新しい[[資源]]]]の [[URL]]
:[F[[[navigate]] の引数]]の[VAR[新しい[[資源]]]]の[F[[[応答]]]]:[VAR[新しい[[資源]]]]の[F[[[応答]]]] (あれば)
:[F[[[文書]]]]:[VAR[新しい[[文書]]]] [SRC[>>12]]
:[F[[[スクロール復元モード]]]]: [CODE[[[auto]]]] [SRC[>>12]]
:その他:関係する状態 [SRC[>>12]]
]FIG]
== [291] 新しいエントリーへ[VAR[[[置換有効]]]]と
[VAR[[[reload-triggered navigation]]]] について[[履歴を探索]]します。 [SRC[>>12]]
= [114] [VAR[[[mature]]]] フラグを設定します。 [SRC[>>12]]
= [115] [VAR[[[navigate]] する[[閲覧文脈]]]]が[[入れ子閲覧文脈]]で
[F[[[delaying [CODE(DOMe)@en[load]] events mode]]]] フラグが設定されている場合は、 
これを削除します。 [SRC[>>12]]
= [573] 
[VAR[新しい[[文書]]]]について
[[try to scroll to the fragment]]
します。
]FIG]

;; [107] これは[VAR[新しい[[文書]]]]の[[レンダリングの開始]]のタイミングであり、
他の[[フレーム]]の[[スクリプト]]から[VAR[新しい[[文書]]]]にアクセスできるタイミングでもあります
([[履歴の探索]]内で、[[閲覧文脈]]の[[活性文書]]が新しいものに設定されます)。
本アルゴリズムは[VAR[新しい[[文書]]]]自体の[[スクリプト]] (あれば) よりも前に実行されます (>>106)。

;; [187] [VAR[新しい[[資源]]]]の [[URL]] が指定されない時もありますが
([CODE(JS)@en[[[window.open]]]])、その場合の[[セッション履歴エントリー]]がどうなるかは不明です。
[CODE(URI)@en[[[about:blank]]]] または [[Webブラウザー]]依存のエラーページの [[URL]]
でしょうか。

-*-*-

[100] 
[[閲覧文脈]]に[[文書]]が表示されると、
[[素片識別子にスクロール]]、
つまり 
[[URL]]
の[F[素片][素片識別子]]が
[[viewport]]
に表示されるように適宜[[スクロール]]されます。
[[仕様書]]では、これは[VAR[文書]]について
[DFN[try to scroll to the fragment]]
する処理として記述されています
[SRC[>>12]]。

[HISTORY[
[101] かつては、長らく、
[[仕様書]]上は[[イベントループのスピン]]として記述されていました。
[[セッション履歴を新しいページで更新]]自体も[[素片識別子にスクロール]]する操作も任意のタイミングで行えるため、
実は[[スピン]]を使わない形に等価に置き換えられます。
[[仕様書]]が[[スピン]]により記述していたのは、
「適切と認められるタイミング」を厳密に表現するためでしょうか。
]HISTORY]

[574] 
この処理は、
[[セッション履歴を新しいページで更新]]し終わってから、
[VAR[文書]]の[F[構文解析器]]
が
[[stop parsing]]
するまでの間で、
[[利用者エージェント]]が適当と認めるタイミングで、
結果が失敗でなくなるまで、
任意の回数実行されます。
[VAR[文書]]の[F[構文解析器]]がないとき、何もしません。
[SRC[>>12]]

;; [575] 
[VAR[文書]]の[F[構文解析器]]がないときとは、
[[初期[CODE[about:blank]]文書]]のときだけと思われます。

[576] 
次のようにします。
[SRC[>>12]]

[FIG(steps)[

= [577] 
[[タスクをキューに追加]]します。
[FIG(list members)[

: [VAR[処理]] :
[FIG(steps)[

= [578] [[利用者エージェント]]の判断により、ここで停止します。
= [579] [VAR[結果]]を、
[VAR[文書]]について、
[[素片識別子にスクロール]]した結果に設定します。
= [580] 
[VAR[結果]]が失敗の場合、
また改めて時機を見て実行できます (>>574)。

]FIG]
: [VAR[[[タスクキュー]]]] : [[ネットワークタスク源]]
]FIG]

]FIG]

[89] 
結果が失敗でなくなるか、
この処理を実行しないと判断した時点で、
[[navigate]] としての処理は完了です [SRC[>>12]]。後片付け (>>109) に移ります。


[581] 
この処理は、
[[navigate]] された[VAR[新しい[[文書]]]]を[[読み込みながら表示][incremental rendering]]する途中に、
[[素片識別子]]で示された[[要素]]に[[スクロール]]するためのものです。
[[Webブラウザー]]は[[文書]]の表示が完了するまで待たずに[[スクロール]]できます。
[[素片識別子]]が参照する[[要素]]はいつ出現するかわからないので、
[[Webブラウザー]]は適当なタイミングで探し続ける必要があるのです。

[582] 
また、
[[素片識別子]]の参照する[[要素]]が見つかって[[スクロール]]するより前に、
[[利用者]]が[[スクロールバー]]を操作するなど相反する状態に変化させることがあります。
[[Webブラウザー]]は[[利用者]]の意図を推測し、
[[素片識別子にスクロール]]する処理をキャンセルすることが認められているのです。


** 媒体文書やプラグイン文書の場合

[159] [[媒体文書]]や[[プラグイン文書]]として表示される場合には、
[[素片識別子]]が付いた [[URL]] が [CODE(HTMLa)@en[[[src]]]] [[属性]]に設定されることになりますから、
その[[要素]]の処理の一部として[[素片識別子]]が適用されることがあります。

[EG[
[160] 例えば[[動画]]の[[素片識別子]]で [CODE[[[t=]]]] が指定されていれば、
その位置から再生されます。
]EG]

;; [161] 理論上は[[媒体文書]]や[[プラグイン文書]]における[[文書の示された部分]]へと[[素片識別子にスクロール]]されることになりますが、
実際には[[媒体文書]]や[[プラグイン文書]]に示された部分は存在しないでしょうから、
そちらでは何も起こらないと思われます。

* 閲覧文脈外の処理

[48] [[閲覧文脈]]に影響せずに新しい[[資源]]を処理する場合もあります。

[133] [VAR[取り消し]]されていれば、何もしません。[VAR[取り消し]]されていなければ、
次の通り何らかの処理を実行します。
[FIG(middle list)[
- 何もしない
- [[閲覧文脈]]以外にメッセージやエラーを表示
- [[ダウンロード]]
- [[証明書ダウンロード]]
- [[外部アプリケーション]]の起動
- 処理方法選択ダイアログの表示
]FIG]

;; [57] なお[[fetch]] (相当) を行う前にこちらの処理方法に移行する場合と、
[[fetch]] 結果をこちらの方法で処理する場合があります。
[[外部アプリケーション]]を起動する場合、前者なら [[URL]] を渡し、
後者なら [[fetch]] して得られたデータを渡すことになります。

[EG[
[29] 例えば [[fetch]] 前の時点で [[URL scheme]] に対応していないので無視する場合があります
[SRC[>>12]]。
]EG]

[EG[
[86] [[MUA]] が利用できない状態での [CODE(URI)@en[[[mailto:]]]] への [[navigate]] や、
特権を持たないページからの [CODE(URI)@en[[[about:]]]] や [CODE(URI)@en[[[chrome:]]]]
や [CODE(URI)@en[[[file:]]]] への [[navigate]] で何もせずに無視する実装があります。

;; [87] しかしそのような動作は不親切で好ましくないと思われます。
[CODE(URI)@en[[[mailto:]]]] へリンクするページは数多ありますが、
[[クリック]]しても何も起こらないのは何かが壊れているように見えます。
[CODE(URI)@en[[[mailto:]]]] などの場合は[[ヘルパーアプリケーション]]選択の[[ダイアログ]]を出すのが好ましいと思われます。
[CODE(URI)@en[[[about:]]]] などの場合は[[非文書表示]]によりエラーを出すのが好ましいと思われます。
>>174 も参照。
]EG]

[EG[
[58] [[fetch]] 前の時点で [[URL]] を[[外部アプリケーション]]に引き渡す場合
(例えば [CODE(URI)@en[[[mailto:]]]] [[URL]] を [[MUA]] に渡す場合 [SRC[>>12]]) があります。
]EG]

[EG[
[40] 例えば [[fetch]] 結果を[[外部アプリケーション]]によって処理したり、
未知の[[MIME型]]なので[[ダウンロード]]として処理したりします [SRC[>>12]]。

;; [56] 多くの [[Webブラウザー]]では、どう処理するか[[利用者]]に問い合わせる
(非モーダル) [[ダイアログ]]を表示します。

[EG[
[61] [[fetch]] した [[Word]] 文書を[[ワープロ]]アプリケーションに引き渡す場合があります
[SRC[>>12]]。
]EG]
]EG]

[EG[
[324] [[プラットフォーム]]によっては、 ([CODE(URI)@en[[[http:]]]] [[URL]] も含め)
[[URL scheme]] や [[URL]] のパターンに対して処理する[[アプリケーション]]を登録できるものがあります。
詳しくは >>90 参照。
]EG]

[62] [[利用者エージェント]]は、[[外部アプリケーション]]に引き渡す場合は、
[[著者]]による対象ソフトウェアの悪用を防ぐよう努力する[['''べきです''']] [SRC[>>12]]。

[EG[
[63] 例えば、[VAR[文書]]の[F[起源][文書の起源]]が当該ソフトウェアを起動することを認められているかを[[利用者]]に確認させることができます [SRC[>>12]]。
]EG]

[64] 特に、
[VAR[始点閲覧文脈]]の
[F[[CODE[WindowProxy]]]]
の
[F(ss)[Window]]
の[F[過渡活性化]]が[[偽]]の場合、
事前の[[利用者]]の確認無しで外部[[ソフトウェア]]を起動する[SHOULD[べきではありません]] [SRC[>>12]]。

;; [67] [[外部アプリケーション]]の実行自体が[[ブラクラ]]となり得ます。
[[同じ起源]]や[[利用者]]により既に認められた[[起源]]であっても、
何度も重ねて起動することは抑制するべきでしょう。
また様々な異なる[[外部アプリケーション]]を次々と起動しようとすることも抑制するべきでしょう。

;; [80] ここでいう[[外部アプリケーション]]とは、実装方法によらず、[[閲覧文脈]]や[[ダウンロード]]など
[[Webブラウザー]]の機能以外を指すものと思われます。例えば [[Webブラウザー]]と [[MUA]]
が統合され同一[[プロセス]]で動作する製品があったとしても、
その [[MUA]] は[[外部アプリケーション]]と解釈するべきでしょう。
また[[ダウンロード]]や[[証明書ダウンロード]]のような [[Webブラウザー]]内の機能も、
[[ブラクラ]]化を防ぐなど類似した配慮が必要かもしれません。

;; [257] 
[[外部アプリケーション]]を実行してよいかどうかの確認ダイアログの表示も、
[[ブラクラ]]となることのないように、 [[UI]] の配慮が必要です。

[66] [[実行可能ファイル]]など、 [[fetch]] 完了後の実行には特に注意しなければならない場合もあります。

[331] [[ダウンロード]]に移行する場合、[[navigate]] 開始元の[[起源]]を処理に使います。
これが何なのかは不明瞭ですが、[VAR[始点文書]]の[F[起源][文書の起源]]が適切そうです。

[338] [[ダウンロード]]の際は、[VAR[提案ファイル名]]を引き渡します。

;; [[ダウンロード]]も参照。

[128] いずれにせよ、[[閲覧文脈]]外の処理を開始したら、 (その完了を待たずに)
[[navigate]] としての処理は完了です。その時点で後片付け (>>109) に移ります。

[239] [VAR[新しい[[最上位閲覧文脈]]]]の場合で、
[[navigate]] の結果が[[閲覧文脈]]外となった場合には、
使われない[[閲覧文脈]]が残ることになります。
古い [[Webブラウザー]]では空白 ([CODE(URI)@en[[[about:blank]]]]) 
のままの[[タブ]]や[[窓]]が表示された状態でしたが、現在の
[[Webブラウザー]]では自動的に閉じられるのが普通です。

;; [240] [[Chrome]] では、そのような [CODE(JS)@en[[[window.open]]]] が返した
[CODE(DOMi)@en[[[Window]]]] [[オブジェクト]]は [CODE(JS)@en[[[window.open]]]]
直後時点では[[初期[CODE(URI)@en[about:blank]]文書]]ですが、 [[navigate]]
後には[[異なる起源]]にアクセスした時のような (ほとんど何の情報にもアクセスできない) 
状態になっているようです ([[同じ起源]]への [[navigate]] であっても)。 [TIME[2015-07-19T02:21:48.900Z]]

;; [241] 新しい[[閲覧文脈]]が作成されたとしても、それがどの時点で表示されるべきかは、
仕様としては決められていません。理論上は[[閲覧文脈の選択]]/[[閲覧文脈の作成]]時点ではまだ新しい[[窓]]や[[タブ]]は表示せず、
[[navigate]] により[[レンダリングの開始]]となった時点ではじめて表示する
([[閲覧文脈]]を使わないなら、一度も表示しない) こともできなくはありません。
ただしその間 ([[サーバー]]からの[[応答]]を待つため、[[ネットワーク]]や[[サーバー]]の状態に依存する時間)
[[利用者]]は新しい[[閲覧文脈]]を開いた操作が成功しているかどうか不安になるかもしれませんから、
何らかの表示上の配慮が必要かもしれません。

[391] [[Chrome]] は新しい [[URL scheme]] が完全に未知のものである時、
何もしないようです。 [TIME[2016-06-06T15:26:09.000Z]]

[393] [[Firefox]] は [[FTP]] への [[navigate]] で[[サーバー]]が予期せぬ[[返答]]を返した時、
それを[[モーダルダイアログ]]で表示します。 [TIME[2016-06-11T10:30:19.900Z]]

[406] 何らかの問題 (セキュリティー制限違反など) が原因で何もしないことを選択した場合は、
[CODE[webNavigation]] API の [CODE[onErrorOccurred]] を、
エラーの説明の文字列と現在時刻と共に実行します。 [SRC[仕様書なし]]

* 取扱器による処理

[206] [[登録済みプロトコル取扱器]][DEL[や[[登録済み内容取扱器]]]]で適用可能なものがあれば、
それが使われることがあります。
ただしどの条件で使われるかや、使われる場合にどのような [[navigate]]
が行われるかの詳細は、 [CITE[HTML Standard]] では規定されていません。

[429] [VAR[URL]]と[VAR[閲覧文脈]]に関する[[navigate URL schemeの処理]]は、
次のようにします [SRC[>>12]]。
[FIG(steps)[
= [430] [VAR[URL]] が[VAR[閲覧文脈]]外で処理されるなら、そのようにします。
= [431] それ以外なら、 [VAR[URL]] を[VAR[閲覧文脈]]で[[非文書表示]]します。
]FIG]

[432] [[取扱器]]に委ねる場合は、新しい [[navigate]] を実行します [SRC[>>12]]。

[207] 多くの [[Webブラウザー]]は、 [[URL]] [VAR[URL]] の処理方法を次のように決定するようです。
[FIG(steps)[
= [342] [VAR[URL]] がセキュリティー上の制限 (>>174) に抵触するなら、それに従うこととし、
こちらはここで終わります。
= [343] [VAR[一覧]]を、空のリストに設定します。
= [344] [VAR[URL]] が[[Webブラウザー]]で扱える [[URL]] なら、
== [346] [VAR[一覧]]に、通常の [[navigate]] の継続の選択肢を追加します。
== [345] [VAR[URL]] の[F[scheme][URL scheme]] が [[network scheme]] なら、
=== [353] [[OS]] の[[プロトコル取扱器]]のうち、 [VAR[URL]]
を扱えるものの一覧を取得し、これを[VAR[一覧]]に追加します。
= [347] それ以外なら、
== [348] [[Webブラウザー]]に登録されている[[登録済みプロトコル取扱器]]や
[[OS]] の[[プロトコル取扱器]]のうち、 [VAR[URL]] の [F[scheme][URL scheme]]
を扱えるものの一覧を取得し、これを[VAR[一覧]]に追加します。
順序は、実装方法や利用者の設定に依存します。
= [349] 一覧が空の場合は、 [[URL scheme]] に対応していない旨のエラーを表すエラー文書を[[閲覧文脈]]に表示することとし、こちらはここで終わります。
= [352] 一覧の項目が1つだけで、それが通常の [[navigate]] の継続である場合、
[[navigate]] を継続することにし、こちらはここで終わります。
= [350] 実装や利用者の設定により既定の[[プロトコル取扱器]]を利用する場合は、
一覧の先頭の[[プロトコル取扱器]]を使うこととし、こちらはここで終わります。
= [351] 一覧を非モーダルな[[ダイアログ]]として表示することにします。
]FIG]

;; [[登録済みプロトコル取扱器]]も参照。

[EG[
[354] [[Windows]] では、 [[URL scheme]] を処理する[[アプリケーション]]を[[レジストリー]]に登録できます。
]EG]

[EG[
[355] [[Android]] では、[[アプリ]]が処理する [CODE(URI)@en[http:]] や
[CODE(URI)@en[https:]] の [[URL]] の[[接頭辞]]を登録できます。
]EG]

[356] [[network scheme]] の場合に [[OS]] の処理器を使うのは、
[VAR[[[navigate]] する[[閲覧文脈]]]]が[[入れ子閲覧文脈]]や[[補助閲覧文脈]]のとき不適切そうで、
抑制するべきだと思われます。

[HISTORY[
[209] 多くの [[Webブラウザー]]は、 [[MIME型]]依存の処理方法を次のように決定するようです。
[FIG(steps)[
= [[Webブラウザー]]が扱える [[sniffed MIME type]] なら、通常の [[navigate]] を行うこととし、
こちらはここで終わります。
= 
[FIG(list)[
- [213] [VAR[新しい[[資源]]]]の[F[要求]]の[F[メソッド][要求メソッド]]が [CODE(HTTP)@en[[[GET]]]] の場合 [SRC[>>210]] に、
- [212] [[Webブラウザー]]に登録されている[[登録済み内容取扱器]]で、
- [211] [[応答]]の [[sniffed MIME type]] の [CODE[[VAR[type]]/[VAR[subtype]]]]
部分 ([[引数]]なし) と[[登録済み内容取扱器]]の[[MIME型]]が同じ [SRC[>>210]] で、
]FIG]
... や、 [[OS]] の[[内容取扱器]]のうち [[MIME型]]が[[応答]]の [[sniffed MIME type]] 
と一致するものの一覧を取得します。順序は、実装方法や利用者の設定に依存します。
= 一覧が空の場合は、[[ダウンロード]]として処理することとし、こちらはここで終わります。
= 実装や利用者の設定により既定の[[内容取扱器]]を利用する場合は、
一覧の先頭の[[内容取扱器]]を使うこととし、こちらはここで終わります。
= 一覧および「[[ダウンロード]]」の選択肢を非モーダルな[[ダイアログ]]として表示することにします。
]FIG]

;; [[登録済み内容取扱器]]も参照。
]HISTORY]

[436] [[登録済みプロトコル取扱器]][DEL[や[[登録済み内容取扱器]]]]は、
[VAR[新しい[[資源]]]]の[F[要求]]の[F[メソッド][要求メソッド]]が
[CODE(HTTP)@en[GET]] でなければ使えません。
多くの[[プラットフォーム]]の[[取扱器]]も、 [CODE(HTTP)@en[GET]]
しか扱えないと思われます。

[208] [[Chrome]] では、[[登録済みプロトコル取扱器]]への [[navigate]]
が行われたら、元の[[文書の番地]]が[[文書のreferrer]]になるようです。
[[Firefox]] では、[[文書のreferrer]]は設定されないようです。

;; 他の [[fetch]] や [[navigate]] の[[引数]]が引き継がれるのかどうかは不明です。

* 取り消し処理

[138] [[利用者エージェント]]は、[[利用者]]が ([[取り消し]]フラグが設定されていない)
[[navigate]] を[RUBYB[取り消し]@en[cancel]]する手段を提供しても構いません [SRC[>>12]]。
あるいは[[利用者]]が他の [[navigate]] を開始できるようにしても構いません [SRC[>>12]]。
その場合の取り消しの [VAR[reason]] は [[end-user abort]] と思われます。

[139] [[navigate]] は、他の [[navigate]] や
[[traverse the history by a delta]] により取り消しされることもあります。

[539] [[navigate]] される過程にあるかどうかは、
[CODE[document.open]] で参照されることがあります。

[166] [[navigate]] は、[[文書読み込みを停止]]により取り消されることがあります。

[123] [[navigate]] を取り消す場合は、次のように処理しなければ[['''なりません''']]
[SRC[>>12]]。取り消しは、[[引数]]として事由 [VAR[reason]] と共に行います。

;; [137] が、現時点で [[HTML Standard]] は [VAR[reason]] を規定していません。
基本的には [[end-user abort]] か [[fatal]] に当たると思われます。

[FIG(steps)[
= [124] [VAR[取り消し]]フラグを設定します。
= [125] [VAR[新しい[[資源]]]]の [[fetch]] を実行中なら、これを [[terminate]] します
[SRC[>>12]]。 [VAR[reason]] を引き渡します。
= [126] [VAR[新しい[[文書]]]]があれば、[[文書のabort]] を実行します [SRC[>>12]]。
= [405] [CODE[webNavigation]] API の [CODE[onErrorOccurred]] を、
取り消された旨の説明文字列と現在時刻と共に実行します。 [SRC[仕様書なし]]
]FIG]

;; [136] [[navigate]] が取り消しされても、 [[navigate]] が呼び出されている
[[unload a document]] を完了させたり、後片付け (>>109) を実行したりする必要があり、
直ちに [[navigate]] 処理が停止されるわけではありません。

;; [144] [[navigate]] の結果[[ダウンロード]]に移行した場合、その[[ダウンロード]]処理は最早
[[navigate]] の一部ではないので、他の [[navigate]] から取り消されはしません。

* navigate の停止

[109] [VAR[[[navigate]] する[[閲覧文脈]]]]が[[入れ子閲覧文脈]]で
[[delaying [CODE(DOMe)@en[load]] events mode]] フラグが設定された場合は、 
[[navigate]] の停止時にこれを削除しなければ[['''なりません''']]
[SRC[>>12]]。

;; 完全に実行して終了した場合も、途中で終了した場合や取り消された場合もこれが実行されます。

;; [110] 複数の [[navigate]] が同時に実行されることは (最初のチェック部分を除き)
ないはずなので、本フラグを設定する [[navigate]] は1つだけのはずですし、
本 [[navigate]] が設定していないのに他の [[navigate]] が設定していることもないはずです。

[230] [[HTML構文解析器]]が動作する場合にせよ、それ以外にせよ、
[[閲覧文脈]]内に何かを新たに表示した場合には、最終的に [[stops parsing]]
が呼び出されています。

[228] [CODE(HTMLe)@en[[[embed]]]] [[要素]]、
[CODE(HTMLe)@en[[[object]]]] [[要素]]から [[navigate]] が呼び出された場合、
[[資源]]の読み込みが完了したら、[[要素]]で
[CODE(DOMe)@en[[[load]]]] [[イベント]]を[[発火]]することになっています。
これは [[stops parsing]] の最終段階を表すと思われます。

;; [CODE(HTMLe)@en[[[embed]]]], [CODE(HTMLe)@en[[[object]]]], [[stops parsing]] 参照。

[400] [[文書]]の [CODE(DOMe)@en[DOMContentLoaded]] や [CODE(DOMe)@en[load]]
の[[イベント]]も、 [[stops parsing]] 内で[[発火]]されます。

* 進捗表示

[140] [[navigate]] が開始してから停止するまでの間、 [[Webブラウザー]]は何らかの形で
[[navigate]] 中であることやその進捗を表示するのが普通です。

;; [[busy indicator]] を参照。

@@ [205] [CODE(DOMi)@en[[[PerformanceNavigationTiming]]]]

[326] [[IE]] は、ページ遷移開始時に [[OS]] で設定した効果音を鳴らします。

;; 正確なタイミングがいつなのかはよくわかりません。[[リンク]]の[[クリック]]なのか、
その他の [[navigate]] でも発生するのか、どんな [[URL]] でも ([CODE(URI)@en[javascript:]]
や[[素片識別子]]でも) なのか、表示変更が決まった時点なのかよくわかりません。

* URL scheme による navigate 制限

[174] [[著者]]が発生させた [[navigate]] ([[スクリプト]]によるものの他、
[[利用者]]が[[ハイパーリンクを辿る]]ことにより発生したものを含みます。)
は、その前後の [[URL]] の [[URL scheme]] 等によって制限されることがあります。

[175] 制限される対象となる場合には、何も起こらなかったり、エラーが行内で表示されたりします。

[176] 制限されるのは、 [[navigate]] の呼び出し元 (?) の[[起源]]が特権を持たない場合で、
[VAR[新しい[[資源]]]]が特権を持つ場合です。ここでいう特権を持った[[起源]]の
[[URL]] とは、例えば
[FIG(list middle)[
- [[Webブラウザー]]の特別な機能を表す [[URL]]
-- ほとんどの [CODE(URI)@en[[[about:]]]] [[URL]]
-- [[Chrome]] の [CODE(URI)@en[[[chrome:]]]] [[URL]]
-- [[Opera]] の [CODE(URI)@en[[[opera:]]]] [[URL]]
-- [CODE(URI)@en[view-source:]] [[URL]]
- [[ブラウザー拡張]]のための [[URL]]
-- [[Firefox]] の [CODE(URI)@en[[[chrome:]]]] [[URL]]
-- 特権を持った[[起源]]を持つ [CODE(URI)@en[[[jar:]]]] [[URL]]
-- [CODE(URI)@en[[[chrome-extension:]]]] [[URL]]
- [[ローカルファイル]]を表す [[URL]]
-- [CODE(URI)@en[[[file:]]]]
]FIG]
... のようなものをいいます。特権を持つ [[URL]] から異なる[[起源]]で特権を持つ [[URL]]
の場合も、認められないかもしれません。

@@ [CODE[moz:]]

[EG[
[340] [CODE(URI)@en[https:]] から [CODE(URI)@en[file:]] への[[ハイパーリンク]]は、
悪用される危険性があるため、認められるべきではありません。
]EG]

[EG[
[341] [[ブラウザー拡張]]のページから他の[[ブラウザー拡張]]のページへの[[ハイパーリンク]]は、
好ましくないとして認められないかもしれません。
]EG]

[EG[
[373] [CODE(URI)@en[http:]] のページに[[Webブラウザー]]の設定ページを [CODE(HTMLe)@en[iframe]]
で埋め込めるのは、不適切でしょう。
]EG]

;; [242] [CODE(URI)@en[[[file:]]]] の取り扱いは[[セキュリティー]]上の問題もあるため明確に定めるべきように思われますが、
現時点ではそのような仕様書は存在していないようです。

;; [243] [[IE]] は [CODE(URI)@en[[[http:]]]] から [CODE(URI)@en[[[res:]]]]
への[[ハイパーリンク]]や[[フレーム]]による [[navigate]] を認めているようです。 [TIME[2015-07-19T03:40:49.200Z]]

[377] 特権を持つ [[URL]] から持たない [[URL]] への [[navigate]] は通常は認められますが、
特別な扱いが必要かもしれません。例えば [CODE(URI)@en[file:]] から
[CODE(URI)@en[https:]] への[[リンク]]は普通認められるべきと考えられますが、
[CODE(HTTP)@en[Referer:]] は送るべきでは無さそうです。

[339] 他にも [[URL]] 依存の制約があるかもしれません。
例えば、 [CODE(URI)@en[javascript:]] [[URL]] は[[著者]]が指定した[[閲覧文脈]]への
[[navigate]] のみ認められるべきで、[[利用者]]が新しい[[閲覧文脈]]を開いたり、
他の既存の[[閲覧文脈]]を選んだりできるべきではなさそうです。

;; [[ハイパーリンクの処理]]を参照。

[495] [[Chrome]] は [CODE(URI)@en[chrome:]] [[URL]] での[[ブックマークレット]]
([CODE(URI)@en[javascript:]] [[URL]] に [[navigate]] する[[ブックマーク]])
を実行しません。

[374] [CODE(URI)@en[https:]] に [CODE(URI)@en[http:]] を埋め込めないとの制限
([[Mixed Content]] 制約) や、 [CODE(HTTP)@en[X-Frame-Options:]]
による埋め込み制約は、本項の制約とはまた異なるものです。

* プライバシー

[218] [[navigate]] の結果は[[利用者エージェント]]や [[OS]] の実装や[[利用者]]の設定に依存することがあります。
これは [[fingerprinting vector]] です。
特に[[媒体文書]]、[[プラグイン文書]]、[[エラー文書]]の違いは[[スクリプト]]からも検出しやすいので[[利用者エージェント]]の実装者は注意するべきかもしれません。

[219] エラー文書の [[DOM]] に詳細なエラー情報を含めてしまうと、
不必要に[[著者]]に情報を流出させてしまうことがありますから、注意が必要です。

[EG[
[220] 例えばネットワークエラーを表すエラー文書で自ホストのネットワークインターフェイスの名前や利用状況などの情報を表示すると[[利用者]]に有用かもしれませんが、
[[DOM]] を通じて[[著者]]が取得できるのは好ましくありません。
]EG]

* 歴史

[534] [[navigate]] に相当するものは [[Web]] の誕生と同時に出現したといえますが、
これが[[仕様書]]の形で明文化されたのは、それから十数年が経過した後の
[CITE[HTML5]] (現在の [CITE[HTML Standard]]) においてでした。

[1] [CITE@en[Web Applications 1.0 r5685     Make form submission via .submit(), and page navigation via location.href, when either is done before the page has completely loaded, result in a history replacement (like a redirect) rather than a regular load.]]
( ([TIME[2010-11-30 10:22:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5684&to=5685>

[2] [CITE@en[Web Applications 1.0 r5686     Change pushState() and replaceState() so that they update the pending state object as well (otherwise, pushState vs pushState;back;forward would result in different state objects in the initial popostate which is just silly).]]
( ([TIME[2010-11-30 11:07:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5685&to=5686>

[3] [CITE[''''''[''''''whatwg'''''']'''''' pushState and session history issues]]
( ([TIME[2010-11-30 23:35:29 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-November/029234.html>

[8] [CITE@en[Web Applications 1.0 r6630     Define navigating to video and audio resources]]
( ([TIME[2011-10-05 09:02:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6629&to=6630>

[9] リンクのクリック時に [CODE(DOMa)@en[[[click]]]] で [CODE(HTMLe)@en[[[img]]]] を使って [[fetch]]
を行うと、 [[IE10]] ではアクセスが発生しますが、 [[Firefox]] と [[Chrome]] ではアクセスが来ません。
[CODE(DOMa)@en[[[mousedown]]]] だと [[Chrome]] はアクセスが来ますが、応答を受け取ったり受け取れなかったりするようです。
[[Chrome]] の場合 [[navigation]] によってアクセスが中断され、そのタイミングによって要求が送られたり送られなかったり、
応答を処理できたりできなかったりするようです。 [TIME[2013-07-04T03:10:59.800Z]]

[10] [CITE[''''''[''''''whatwg'''''']'''''' scrdoc and session history don't play along in the spec]]
( ([TIME[2013-07-13 11:50:26 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-July/040059.html>

[11] [CITE[''''''[''''''whatwg'''''']'''''' Avoiding synchronous iframe load]]
( ([TIME[2013-10-26 04:58:58 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-October/041281.html>

[4] [CITE[''''''[''''''whatwg'''''']'''''' Navigation and history traversal issues]]
( ([TIME[2012-09-19 01:33:19 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-September/037325.html>

[5] [CITE@en-US[Window Object 1.0]]
( ([TIME[2006-04-08 02:19:28 +09:00]] 版))
<http://www.w3.org/TR/Window/#dfn-navigate>

[6] [CITE@en[Web Applications 1.0 r8555     Be more explicit about handing off to external software during navigation.]]
( ([TIME[2014-03-20 07:01:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8554&to=8555>

[7] [CITE@en[Web Applications 1.0 r8799 Stop using the word 'asynchronously', and reduce usage of the word 'synchronous'.]]
( ([TIME[2014-09-20 08:19:00 +09:00]] 版))
<https://html5.org/r/8799>

[227] [CITE@ja[» 想定外のスキームと脆弱性 TECHSCORE BLOG]]
([TIME[2015-06-21 10:45:25 +09:00]] 版)
<http://www.techscore.com/blog/2015/04/25/scheme-security/>

[234] [CITE[URLスキーム・独自ディープリンク実装に代わる、Universal Links(iOS 9で導入)でより良いUXを実現 - Qiita]]
([TIME[2015-07-07 00:45:34 +09:00]] 版)
<https://qiita.com/mono0926/items/2bf651246714f20df626>

[488] [[navigation scope]]:

[REFS[
- [486] [CITE@en[URL Scope to which the manifest applies · Issue #114 · w3c/manifest]] ([TIME[2017-03-15 23:13:27 +09:00]]) <https://github.com/w3c/manifest/issues/114>
- [269] [CITE@en[27653 – Navigation scope]]
([TIME[2015-09-03 16:18:43 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=27653>
- [487] [CITE@en[define URL Scope (closes #114)]] ([[marcoscaceres]]著, [TIME[2014-12-19 16:36:48 +09:00]]) <https://github.com/w3c/manifest/commit/72d65ad6bdbc52957226f31a6ef3dc27d09a24cd>
]REFS]

[270] [CITE@en[Integrate Fetch into HTML · whatwg/html@7c5555a]]
([TIME[2015-09-18 19:19:52 +09:00]] 版)
<https://github.com/whatwg/html/commit/7c5555a16f2920c02244c10756bb2f1a11e87a22>

[278] [CITE@en[Add 'HTTPS state' to settings objects · whatwg/html@6de5241]] ([TIME[2015-09-29 23:58:59 +09:00]] 版) <https://github.com/whatwg/html/commit/6de524157fcf341e10efb3eec634bcf7325e6ee4>

[217] [CITE@en[Fix #124: make more types follow text/plain navigate logic · whatwg/html@f94f3c4]] ([TIME[2015-10-01 00:49:49 +09:00]] 版) <https://github.com/whatwg/html/commit/f94f3c4595fbc5fecb747ef52f46cdc5f2b3feec>

[280] [CITE@en[Define additional request parameters for navigate · whatwg/html@80f052b]] ([TIME[2015-10-07 20:05:02 +09:00]] 版) <https://github.com/whatwg/html/commit/80f052b44f3842084221b1104d1fecb02228699a>

[281] [CITE@en[338621 – Feed View overrides XSLT stylesheet defined in XML document]]
([TIME[2015-10-09 21:44:39 +09:00]] 版)
<https://bugzilla.mozilla.org/show_bug.cgi?id=338621>

[142] [CITE@en[Add and populate global object's "CSP list" · whatwg/html@479dfbf]] ([TIME[2015-11-06 23:10:54 +09:00]] 版) <https://github.com/whatwg/html/commit/479dfbf1ff68b746ed3f81cc7415165e3342709e>

[232] [CITE@en[Add scroll restoration preference to history traversal · whatwg/html@dd6a34e]] ([TIME[2015-11-17 21:03:22 +09:00]] 版) <https://github.com/whatwg/html/commit/dd6a34ec3c191ee1968a0fc8d174b4ce3b615916>

[299] [CITE@en[Remove the storage mutex due to lack of implementation · whatwg/html@1b918cf]] ([TIME[2015-12-16 14:38:10 +09:00]] 版) <https://github.com/whatwg/html/commit/1b918cf72fcbba011f83b92ab5d1f483fb1cafa3>

[300] [CITE@en[Rewrite global object initialization to delegate to ES · whatwg/html@cf0355d]]
([TIME[2015-12-16 18:43:00 +09:00]] 版)
<https://github.com/whatwg/html/commit/cf0355d7e0e229b98f7fbd51b8c7608010c787f5>

[303] [CITE@en[Rewrite script execution on top of ES · whatwg/html@4891d18]]
([TIME[2015-12-22 19:00:32 +09:00]] 版)
<https://github.com/whatwg/html/commit/4891d18aaf2df1d40aa61f467a5a10cfc19dd85d>

[308] [CITE@en[Remove <iframe seamless> · whatwg/html@1490eba]]
([TIME[2016-02-04 19:11:15 +09:00]] 版)
<https://github.com/whatwg/html/commit/1490eba4dba5ab476f0981443a86c01acae01311>

[309] [CITE@en[Remove <iframe seamless> · whatwg/html@1490eba]]
([TIME[2016-02-04 19:24:57 +09:00]] 版)
<https://github.com/whatwg/html/commit/1490eba4dba5ab476f0981443a86c01acae01311>

[311] [CITE@en[Replace sniffed MIME type with computed MIME type · whatwg/html@2f58d1e]]
([TIME[2016-02-10 22:05:02 +09:00]] 版)
<https://github.com/whatwg/html/commit/2f58d1eb6a5eab442a7d31716c7fed7f8eb3f16f>

[322] [CITE@en[Align with URL spec's terminology: "fragment identifier" => "fragment" · whatwg/html@472bd07]]
([TIME[2016-03-02 15:17:55 +09:00]] 版)
<https://github.com/whatwg/html/commit/472bd07726db580b97b9d775996e9d895cda8be0>

[323] [CITE@en[Define security around Window, WindowProxy, and Location properly · whatwg/html@acae3df]]
([TIME[2016-03-13 23:41:55 +09:00]] 版)
<https://github.com/whatwg/html/commit/acae3df652b382e9f4f1d1b4dc7e08e2b00df821>

[325] [CITE@en[Remove the origin aliasing concept · whatwg/html@438155d]]
([TIME[2016-03-23 22:37:47 +09:00]] 版)
<https://github.com/whatwg/html/commit/438155d2a2255aa5ea84ae390744d8a8662ebec2>

[332] [CITE@en[Define the origin of non-initial about:blank documents · whatwg/html@baad9fd]]
([TIME[2016-03-25 13:33:24 +09:00]] 版)
<https://github.com/whatwg/html/commit/baad9fd10e5a49c1c72fc89426ffa2a26e0b72e4>

[335] [CITE@en[Fix navigation to create a new realm and environment settings object · whatwg/html@862afa4]]
([TIME[2016-03-28 21:26:28 +09:00]] 版)
<https://github.com/whatwg/html/commit/862afa4d768cb01e9a020e0562bc465e7f8bacfe>

[305] [CITE@en[Define "server-based naming authority" in terms of URL · whatwg/html@da7b5ba]]
([TIME[2016-03-31 12:47:14 +09:00]] 版)
<https://github.com/whatwg/html/commit/da7b5baf5815754cc40387452ae41e989848032f>

[306] [CITE@en[Merge effective script origin into origin · whatwg/html@8a843f2]]
([TIME[2016-03-31 16:29:36 +09:00]] 版)
<https://github.com/whatwg/html/commit/8a843f2169a6864a3024c4329528dccb2051d275>

[357] [CITE@en[Detail how javascript: return values become response bodies · whatwg/html@9997cd9]]
([TIME[2016-04-27 16:25:13 +09:00]] 版)
<https://github.com/whatwg/html/commit/9997cd93c65a9f4a640a593c02f01c2c58924457>

[358] [CITE@en[Editorial: mark up the primary variables in the navigate algorithm · whatwg/html@c08c0a0]]
([TIME[2016-04-27 17:59:48 +09:00]] 版)
<https://github.com/whatwg/html/commit/c08c0a0d12cf8c4f12dee2593be10eb971e0eb65>

[359] [CITE@en[Make navigate use "in parallel" · whatwg/html@77b1e02]]
([TIME[2016-05-01 13:52:41 +09:00]] 版)
<https://github.com/whatwg/html/commit/77b1e021bcb9229c60fc90dc72bbb0e0d1cff7e4>

[360] [CITE@en[Assign document's origin during creation · whatwg/html@b94d600]]
([TIME[2016-05-01 14:29:11 +09:00]] 版)
<https://github.com/whatwg/html/commit/b94d600e0e4de5ddea2215078611d6dfd0800391>

[361] [CITE@en[Navigate cannot use a non-GET-non-POST method]]
( ([[annevk]]著, [TIME[2016-05-02 16:05:21 +09:00]]))
<https://github.com/whatwg/html/commit/5c67104e6825ee0fafac1b2dc8892f0d42566649>

[371] [CITE@en[Editorial: turn "exceptions enabled" into a flag]]
( ([[annevk]]著, [TIME[2016-05-02 16:13:36 +09:00]]))
<https://github.com/whatwg/html/commit/879edbfcb25586caec8df93f303a434a700a18bc>

[372] [CITE@en[Editorial: turn "exceptions enabled" into a flag]]
( ([[annevk]]著, [TIME[2016-05-02 16:13:36 +09:00]]))
<https://github.com/whatwg/html/commit/879edbfcb25586caec8df93f303a434a700a18bc>

[380] [CITE@en[Integrate with the Referrer Policy spec, part 2 of n]]
( ([[domenic]]著, [TIME[2016-05-18 01:52:35 +09:00]]))
<https://github.com/whatwg/html/commit/176e74243c649b709b9959b7d08b327290c2f403>

[381] [CITE@en[Navigate: use URL's equals concept to compare URLs]]
( ([[annevk]]著, [TIME[2016-05-30 21:02:46 +09:00]]))
<https://github.com/whatwg/html/commit/f3c2a307658b21dc129ec5b11368e16048238fb8>

[388] [CITE@en[Block redirects to non-HTTP schemes · Issue #309 · whatwg/fetch]]
( ([TIME[2016-05-31 16:24:00 +09:00]]))
<https://github.com/whatwg/fetch/issues/309>

[389] [CITE@en[Make navigate's resource handling more explicit]]
( ([[annevk]]著, [TIME[2016-06-02 00:55:39 +09:00]]))
<https://github.com/whatwg/html/commit/806bc62caaee78a696a6c929558a5b801cceeec4>

[129] [CITE@en[Define the document's referrer in terms of Fetch]]
( ([[annevk]]著, [TIME[2016-06-04 02:52:59 +09:00]]))
<https://github.com/whatwg/html/commit/148dcd7d8214433b80de92b19d27cc5de128f849>

[392] [CITE@en[Cleanup "create a new browsing context"]]
( ([[annevk]]著, [TIME[2016-06-10 02:54:12 +09:00]]))
<https://github.com/whatwg/html/commit/f139279fb116bbde5d5ee3d257d21778cd774144>

[395] [CITE@en['''['''''']''' (0) Placeholder for beforeunload/unload; interaction of document.o…]]
( ([[Hixie]]著, [TIME[2007-04-21 14:30:09 +09:00]]))
<https://github.com/whatwg/html/commit/c1994a485446ab0fbfb7048df10bb081947f6405>

[FIG(quote)[
[FIGCAPTION[
[396] [CITE@en-US[Chrome incompatibilities - Mozilla | MDN]]
( ([TIME[2016-06-14 10:15:04 +09:00]]))
<https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities>
]FIGCAPTION]

> In Firefox, you can't open (using tabs.create), or navigate to (using tabs.update) privileged URLs:
> chrome: URLs
> javascript: URLs
> data: URLs
> privileged about: URLs (for example, about:config, about:addons, about:debugging)

]FIG]


[FIG(quote)[
[FIGCAPTION[
[397] [CITE@en-US[Chrome incompatibilities - Mozilla | MDN]]
( ([TIME[2016-06-14 10:15:04 +09:00]]))
<https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities>
]FIGCAPTION]

> webNavigation
> Firefox does not support:
> onCreatedNavigationTarget
> onTabReplaced
> Filtering
> transition types and qualifiers until Firefox 48
> In Firefox, before Firefox 47,  onReferenceFragmentUpdated also triggers for pushState.

]FIG]

[418] [CITE@en[Define initial about:blank document better]]
( ([[annevk]]著, [TIME[2016-06-21 13:53:01 +09:00]]))
<https://github.com/whatwg/html/commit/8edc92d6e42878662c7f9f75a43352bd341ae01d>

[419] [CITE@en[Use fullscreen logic for initial about:blank documents too]]
( ([[annevk]]著, [TIME[2016-06-09 21:47:29 +09:00]]))
<https://github.com/whatwg/html/commit/c2a8d605e0115c80d1ccb4b15371ecaa56a33e30>

[252] [CITE[Plz Navigate: moving the navigation logic to the browser process - Google グループ]]
([TIME[2016-06-30 11:51:54 +09:00]])
<https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/sOs05JfmPFw>

[420] [CITE@en[Issue 368813 - chromium - '''['''META''']''': Navigation network requests should be made by the browser process (aka PlzNavigate) - Monorail]]
([TIME[2016-06-30 11:52:31 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=368813>

[421] [CITE@en[Navigate: remove "gone async" and define redirect handling]]
([[annevk]]著, [TIME[2016-07-04 17:38:20 +09:00]])
<https://github.com/whatwg/html/commit/8b630f5e4fa2ec8b0999470d09490bffe6e9a1e3>

[433] [CITE@en[Navigate: narrow down requirements for fragment handling]]
([[annevk]]著, [TIME[2016-07-07 00:48:00 +09:00]])
<https://github.com/whatwg/html/commit/10379142cbb138a814d94e24f3e6b14c2439d614>

[FIG(quote)[
[FIGCAPTION[
[437] [CITE[【Swift】WKWebViewのリダイレクト先URL(URLスキーム)に応じて動作したい時にハマったこと - Qiita]]
([TIME[2016-08-03 11:06:34 +09:00]])
<https://qiita.com/seiya_orz/items/0ed195b79953ec607ea1>
]FIGCAPTION]

> didReceiveServerRedirectForProvisionalNavigationはデフォルトでは、http~とhttps~のみをリダイレクト対象として呼び出されるようでした。どのURLをリダイレクトとして扱うかのハンドリングをしている関数が、func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void)です。

]FIG]


[438] [CITE@en[Add another navigation hook for 'form-action'.]]
([[mikewest]]著, [TIME[2016-08-02 21:40:31 +09:00]])
<https://github.com/w3c/webappsec-csp/commit/ad8c11702561db911baab316659de28de1cb00d0>

[439] [CITE@en[Upstream navigation hooks from CSP]]
([[mikewest]]著, [TIME[2016-08-18 17:01:55 +09:00]])
<https://github.com/whatwg/html/commit/2083b0053a059f692a0a95547ba9b6bd0c511094>

[447] [CITE@en[Treat 'data:' documents as unique, opaque origins (#1756)]]
([[mikewest]]著, [TIME[2016-09-13 18:20:33 +09:00]])
<https://github.com/whatwg/html/commit/00769464e80149368672b894b50881134da4602f>

[449] [CITE@en[Disallow *all* navigations during unload, not just cross-origin]]
([[domenic]]著, [TIME[2016-09-16 01:20:25 +09:00]])
<https://github.com/whatwg/html/commit/2a11eef8f92b0335328890dc2cb1e281d18553eb>

[459] [CITE@en[navigation: refactor waiting for navigation and response checks]]
([[andreastt]]著, [TIME[2016-10-07 19:56:00 +09:00]])
<https://github.com/w3c/webdriver/commit/321fff4e12d80a745828f7c711fdc18932cca244>

[460] [CITE@en[Improve navigate for service worker hooks]]
([[jungkees]]著, [TIME[2016-10-24 20:32:35 +09:00]])
<https://github.com/whatwg/html/commit/2b93f9ec35b152e58d3e181bea8c45d789bac949>

[470] [CITE@en[Add environment's execution ready flag]]
([[jungkees]]著, [TIME[2016-11-09 19:26:26 +09:00]])
<https://github.com/whatwg/html/commit/d358c7814de8a053dcb8615a5d87e8c2e0e19257>

[472] [CITE@en[Handle navigation to `javascript:` URLs as inline script. (#142)]]
([[@bzbarsky]]著, [TIME[2016-11-10 17:07:39 +09:00]])
<https://github.com/w3c/webappsec-csp/commit/479bf6c6e891db0bb1cd7f71be764f3aff6a1a33>

[473] [CITE@en[Apply CSP to javascript URLs in navigate]]
([[mikewest]]著, [TIME[2016-11-14 19:14:58 +09:00]])
<https://github.com/whatwg/html/commit/9daeebfbdd068357257fcb69486d47a893c36f63>

[474] [CITE@en[Editorial: Fix markup in “Initializing a new Document object”]]
([[sideshowbarker]]著, [TIME[2016-11-25 16:38:04 +09:00]])
<https://github.com/whatwg/html/commit/0495be19cdfebf34fd3b95786c271319db0ceed6>

[475] [CITE@en[Fetch: remove omit-Origin-header flag]]
([[annevk]]著, [TIME[2016-12-08 03:56:35 +09:00]])
<https://github.com/whatwg/html/commit/1d3dd5da311ce51eeaac027cb053cf482476099a>

[272] [CITE@en[Make same-URL-navigation replace the current entry]]
([[annevk]]著, [TIME[2016-12-21 04:28:14 +09:00]])
<https://github.com/whatwg/html/commit/4f3061ec9a2c3bd868c73edebd14ab751f8f29ea>

[FIG(quote)[
[FIGCAPTION[
[479] [CITE@ja[Web ビュー]]
([[Jwmsft]]著, [TIME[2017-01-20 14:44:59 +09:00]])
<https://msdn.microsoft.com/ja-jp/windows/uwp/controls-and-patterns/web-view>
]FIGCAPTION]

> これらの第 1 レベルのサブフォルダーは、他の第 1 レベルのサブフォルダー内のコンテンツから分離されます。 たとえば「ms-appdata:///temp/folder1/file.html」に移動はできますが、そのファイル内のリンクに「ms-appdata:///temp/folder2/file.html」は指定できません。 ただし、ms-appx-web スキームを使ってアプリ パッケージの HTML コンテンツにリンクしたり、http または https の URI スキームを使って Web コンテンツにリンクしたりはできます。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[480] [CITE@ja[Web ビュー]]
([[Jwmsft]]著, [TIME[2017-01-20 14:45:28 +09:00]])
<https://msdn.microsoft.com/ja-jp/windows/uwp/controls-and-patterns/web-view>
]FIGCAPTION]

> Web ビュー コントロールでは、ナビゲーションやコンテンツの読み込みの状態に対する処理に使うことができるイベントがいくつか用意されています。 ルートとなる Web ビューコンテンツについて、イベントは次の順番で発生します。NavigationStarting、ContentLoading、DOMContentLoaded、NavigationCompleted
> NavigationStarting - Web ビューが新しいコンテンツに移動する前に発生します。 WebViewNavigationStartingEventArgs.Cancel プロパティを "true" に設定することで、このイベントのハンドラーで移動をキャンセルできます。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[481] [CITE@ja[Web ビュー]]
([[Jwmsft]]著, [TIME[2017-01-20 14:45:46 +09:00]])
<https://msdn.microsoft.com/ja-jp/windows/uwp/controls-and-patterns/web-view>
]FIGCAPTION]

> NavigationCompleted - Web ビューが現在のコンテンツの読み込みを完了したとき、またはナビゲーションに失敗したときに発生します。 ナビゲーションが失敗したかを判断するには、WebViewNavigationCompletedEventArgs の IsSuccess プロパティと WebErrorStatus プロパティを確認します。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[482] [CITE@ja[Web ビュー]]
([[Jwmsft]]著, [TIME[2017-01-20 14:46:35 +09:00]])
<https://msdn.microsoft.com/ja-jp/windows/uwp/controls-and-patterns/web-view>
]FIGCAPTION]

> Web ビュー コントロールは、任意のファイルの種類をホストすることができません。 Web ビューがホストできないコンテンツを読み込もうすると、UnviewableContentIdentified  イベントが発生します。 このイベントを処理してユーザーに通知することも、Launcher クラスを使ってファイルを外部のブラウザーまたは別のアプリにリダイレクトすることもできます。
> 同様に、fbconnect:// や mailto:// といったサポートされていない URI スキームが Web コンテンツで呼び出されると、UnsupportedUriSchemeIdentified イベントが発生します。 既定のシステム起動プログラムに URI を起動させるのではなく、このイベントを処理してカスタム動作を定義してもよいでしょう。

]FIG]


[483] [CITE@en[Snapshot allowpaymentrequest and allowusermedia attributes]]
([[zcorpan]]著, [TIME[2017-01-15 01:54:58 +09:00]])
<https://github.com/whatwg/html/commit/b3224a8457e32015153ed91f26b6212e25df1d6b>

[485] [CITE@en[Merge pull request #62 from w3c/user-abort]]
([[igrigorik]]著, [TIME[2017-02-25 15:17:14 +09:00]])
<https://github.com/w3c/navigation-timing/commit/17567f5ef7c1ab79795365e33a86c52716fbcbf4>

[494] [CITE@en[Do not always set the recursive flag in HTTP-redirect fetch]]
([[annevk]]著, [TIME[2017-03-07 22:56:45 +09:00]])
<https://github.com/whatwg/fetch/commit/869ec2c2224200988bbc604f7f5181b6bb9df2c3>

[496] [CITE@en[Call out issues with source browsing context more explicitly]]
([[annevk]]著, [TIME[2017-04-27 22:54:44 +09:00]])
<https://github.com/whatwg/html/commit/a559e721760817dbaffd7e19856993e8b5a20e3b>

[497] [CITE@en[Make window.open() throw for URL parser failures]]
([[annevk]]著, [TIME[2017-05-04 13:56:23 +09:00]])
<https://github.com/whatwg/html/commit/ea52bf4d50cfb4ef88489bff76276b660b40781b>

[498] [CITE@en[Navigate improvements · Issue #1352 · whatwg/html]]
([TIME[2017-05-10 17:56:58 +09:00]])
<https://github.com/whatwg/html/issues/1352>

[499] [CITE@en[Avoid using same variable for different purposes]]
([[annevk]]著, [TIME[2017-05-10 22:38:18 +09:00]])
<https://github.com/whatwg/html/commit/0dab3b81edcfb029f4c60dc55b53c2b848d9553f>

[500] [CITE@en[Editorial: cleanup close a browsing context and prompt to unload]]
([[annevk]]著, [TIME[2017-05-10 20:47:29 +09:00]])
<https://github.com/whatwg/html/commit/b714a7bc124bf0e8828b2adc2aa0b672d96a1dbd>

[501] [CITE@en[Centralize setting the active document]]
([[annevk]]著, [TIME[2017-05-18 13:20:38 +09:00]])
<https://github.com/whatwg/html/commit/4257a9bf03f8ebbd6cc8b41933b6c5b619611662>

[465] [CITE@en[Only wait for navigation to complete if it can.]]
([[shs96c]]著, [TIME[2017-06-02 02:22:58 +09:00]])
<https://github.com/w3c/webdriver/commit/79aa7b3e5caff716d42f1474096efe40348a08e3>

[466] [CITE@en[Deprecations and Removals in Chrome 60  |  Web  |  Google Developers]]
([TIME[2017-06-15 00:01:43 +09:00]])
<https://developers.google.com/web/updates/2017/06/chrome-60-deprecations>

[467] [CITE@en[684011 - Remove: Top frame navigations to data URLs - chromium - Monorail]]
([TIME[2017-07-16 00:17:08 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=684011&desc=2>

[468] [CITE@ja[スマホで見ているWebページを瞬時にPCで開くWindowsの新機能を試してみた - PC Watch]]
([[株式会社インプレス]]著, [TIME[2017-07-27 23:15:43 +09:00]])
<http://pc.watch.impress.co.jp/docs/news/1072892.html>

[469] [CITE@en[Fix mismatched variable names in 'process a navigate fetch']]
([[jyasskin]]著, [TIME[2017-07-27 04:09:20 +09:00]])
<https://github.com/whatwg/html/commit/f63cc2cd461e5902c305c060bad6e937987af81e>

[471] [CITE@en[Fix mismatched variable names in 'process a navigate fetch' by jyasskin · Pull Request #2868 · whatwg/html]]
([TIME[2017-07-28 11:46:04 +09:00]])
<https://github.com/whatwg/html/pull/2868>

[502] [CITE@en[Fix some variable usage in navigate]]
([[annevk]]著, [TIME[2017-07-24 22:54:22 +09:00]])
<https://github.com/whatwg/html/commit/fcf344c28e1d6e39ef35dc9940eabc72867bac1b>

[503] [CITE@en[Fix some variable usage in navigate by annevk · Pull Request #2864 · whatwg/html]]
([TIME[2017-07-30 10:15:59 +09:00]])
<https://github.com/whatwg/html/pull/2864>

[504] [CITE@en[122022 - (file://) '''['''ISSUE''']''' file:// URLs in a http | https page do not work (clicking does nothing, do not auto-load, etc.) '''['''dupe to bug 84128''']''']]
( ([TIME[2017-08-11 02:41:30 +09:00]]))
<https://bugzilla.mozilla.org/show_bug.cgi?id=122022>

[505] [CITE@en[Fragment navigation should use replacement enabled]]
([[annevk]]著, [TIME[2017-08-19 22:16:53 +09:00]])
<https://github.com/whatwg/html/commit/cf02423dc52686d084a3191833d939919b5907fd>

[507] [CITE@en[Bug in hash change algorithm with replace flag · Issue #2796 · whatwg/html]]
([TIME[2017-08-21 23:28:04 +09:00]])
<https://github.com/whatwg/html/issues/2796>

[508] [CITE@en[Fragment navigation should use replacement enabled by annevk · Pull Request #2869 · whatwg/html]]
([TIME[2017-08-21 23:28:24 +09:00]])
<https://github.com/whatwg/html/pull/2869>

[509] [CITE@en[Define the HTTP Refresh header]]
([[annevk]]著, [TIME[2017-08-10 01:57:03 +09:00]])
<https://github.com/whatwg/html/commit/7e9f6b6ffe2119f43f909f71773a25a7e8a61ca7>

[513] [CITE@en[Clarify that Link header processing only happens after the Document i…]]
([[yoavweiss]]著, [TIME[2017-08-31 00:58:14 +09:00]])
<https://github.com/w3c/preload/commit/609ecfa8cdb9cc582a11f87eff290e69e76b3346>

[514] [CITE@en[How do we fetch resources specified in `Link` headers? · Issue #101 · w3c/preload]]
([TIME[2017-08-31 14:55:13 +09:00]])
<https://github.com/w3c/preload/issues/101>



[515] [CITE@en[Remove registerContentHandler() and several friends]]
([[annevk]]著, [TIME[2017-09-14 20:16:09 +09:00]])
<https://github.com/whatwg/html/commit/b143dbc2d16f3473fcadee377d838070718549d3>

[516] [CITE@en[744499 - Consider downloading `ftp://` resources rather than rendering them. - chromium - Monorail]]
([TIME[2017-09-20 17:14:35 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=744499>

[517] [CITE@en[Incorrect indentation of the navigation check algorithm.]]
([[mikewest]]著, [TIME[2017-12-21 18:22:27 +09:00]])
<https://github.com/w3c/webappsec-csp/commit/98bea96e4d55fcd98d8648cef16416a462516cc1>

[518] [CITE@en[Clarify navigation behavior for 'script-src'.]]
([[mikewest]]著, [TIME[2017-12-21 18:28:45 +09:00]])
<https://github.com/w3c/webappsec-csp/commit/7a4577c7975c8afdac0c0fc5a5493059b5660742>

[519] [CITE@en[interface: use Web IDL's new-ish interface mixins concept (#1176)]]
([[romandev]]著, [TIME[2017-12-21 19:09:10 +09:00]])
<https://github.com/w3c/webdriver/commit/d50bdf0c0d6cac5e54cdedc263df3cc2cba173f9>

[520] [CITE@en[Introduce reload-navigation flag by yutakahirano · Pull Request #685 · whatwg/fetch]]
([TIME[2018-05-01 14:00:21 +09:00]])
<https://github.com/whatwg/fetch/pull/685>

[521] [CITE@en[Set request's reload-navigation flag when the navigation is reload-trigerred by yutakahirano · Pull Request #3592 · whatwg/html]]
([TIME[2018-05-01 14:01:41 +09:00]])
<https://github.com/whatwg/html/pull/3592>

[522] [CITE@en[Proposal: FetchEvent.navigationLoadType · Issue #1167 · w3c/ServiceWorker]]
([TIME[2018-05-01 14:02:07 +09:00]])
<https://github.com/w3c/ServiceWorker/issues/1167>

[523] [CITE@en[Ignore a URL with an unsupported scheme (#447)]]
([[tomoyukilabs]]著, [TIME[2018-03-27 03:07:39 +09:00]])
<https://github.com/w3c/presentation-api/commit/fcb49fd5c7bcc1e0809b04037ea11be4d649cb55>

[524] [CITE@en[Multiple presentation URLs including non-http/https URL · Issue #446 · w3c/presentation-api]]
([TIME[2018-05-08 22:09:07 +09:00]])
<https://github.com/w3c/presentation-api/issues/446>

[525] [CITE@en[Ignore a URL with an unsupported scheme by tomoyukilabs · Pull Request #447 · w3c/presentation-api]]
([TIME[2018-05-08 22:09:14 +09:00]])
<https://github.com/w3c/presentation-api/pull/447>

[526] [CITE@en[Add "environment discarding steps" hook]]
([[mattto]]著, [TIME[2018-06-06 11:00:53 +09:00]])
<https://github.com/whatwg/html/commit/9592eb5e25acde62b8832ca5fd47d87805a2acbc>

[528] [CITE@en[Discard the environment after a failed navigation or worker start. by mattto · Pull Request #3723 · whatwg/html]]
([TIME[2018-06-08 17:49:31 +09:00]])
<https://github.com/whatwg/html/pull/3723>

[529] [CITE@en[Set request's history-navigation flag for history traversal]]
([[yutakahirano]]著, [TIME[2018-05-26 06:36:06 +09:00]])
<https://github.com/whatwg/html/commit/437ae8e13bd1b27b951567905e192f78924819d5>

[530] [CITE@en[Proposal: FetchEvent.navigationLoadType · Issue #1167 · w3c/ServiceWorker]]
([TIME[2018-06-14 18:06:29 +09:00]])
<https://github.com/w3c/ServiceWorker/issues/1167>

[531] [CITE@en[Set request's history-navigation flag for history traversal by yutakahirano · Pull Request #3674 · whatwg/html]]
([TIME[2018-06-14 18:07:22 +09:00]])
<https://github.com/whatwg/html/pull/3674>

[532] [CITE@en[Integrate Feature Policy concepts into HTML]]
([[clelland]]著, [TIME[2018-06-23 05:22:11 +09:00]])
<https://github.com/whatwg/html/commit/78741b7b5471ba213c68a22caff1a53c56d35ce8>

[533] [CITE@en[Integrate Feature Policy concepts into HTML by clelland · Pull Request #3287 · whatwg/html]]
([TIME[2018-06-24 00:11:34 +09:00]])
<https://github.com/whatwg/html/pull/3287>

[535] [CITE@en[Fix calls to InitializeHostDefinedRealm]]
([[TimothyGu]]著, [TIME[2018-07-29 04:10:47 +09:00]])
<https://github.com/whatwg/html/commit/39c948ba5ec55677e209bc4fc631636f1e8e2baf>

[536] [CITE@en[document.open() simplifications, part 1]]
([[TimothyGu]]著, [TIME[2018-08-17 07:20:44 +09:00]])
<https://github.com/whatwg/html/commit/6f769b8089a843066aa19f5991405bf4c84458b3>

[537] [CITE@en[Editorial: use "isomorphic decode" for Refresh header steps]]
([[irrationalRock]]著, [TIME[2018-08-23 22:25:10 +09:00]])
<https://github.com/whatwg/html/commit/bef6f783084cdb6e591f2a9d8c731180413e8ef2>

[538] [CITE@en[Remove overridden reload concept]]
([[TimothyGu]]著, [TIME[2018-08-18 05:31:49 +09:00]])
<https://github.com/whatwg/html/commit/6440ccae7340ea41d3eb5bf8ff0b3b27363eda85>

[180] [CITE@en[Rename target client id to replaces client id]]
([[jungkees]]著, [TIME[2018-08-24 20:57:02 +09:00]])
<https://github.com/whatwg/html/commit/951f9b0d62a5186adcdf0d7a37f4586508fbe17b>

[540] [CITE@en[document.open(): only abort when there is a navigation]]
([[TimothyGu]]著, [TIME[2018-09-07 04:24:32 +09:00]])
<https://github.com/whatwg/html/commit/1ca520a308ffd6a3c5f7fc26a67338c145af8376>

[541] [CITE@en[document.open(): only abort when there is a navigation by TimothyGu · Pull Request #3999 · whatwg/html]]
([TIME[2018-10-14 20:13:03 +09:00]])
<https://github.com/whatwg/html/pull/3999>

[542] [CITE@en[Fixed navigation checks running on URL instead of current URL (#347)]]
([[andypaicu]]著, [TIME[2018-10-11 17:21:22 +09:00]])
<https://github.com/w3c/webappsec-csp/commit/91a0f8361c75635babbedc295f88b9403ece468c>

[543] [CITE@en[Fixed navigations running on URL instead of current URL by andypaicu · Pull Request #347 · w3c/webappsec-csp]]
([TIME[2018-10-30 23:55:29 +09:00]])
<https://github.com/w3c/webappsec-csp/pull/347>

[544] [CITE@en[`navigation request’s URL` is unclear · Issue #343 · w3c/webappsec-csp]]
([TIME[2018-10-30 23:55:36 +09:00]])
<https://github.com/w3c/webappsec-csp/issues/343>

[545] [CITE@en[Modify initialize document's CSP list to match changes in CSP]]
([[andypaicu]]著, [TIME[2018-11-26 23:33:37 +09:00]])
<https://github.com/whatwg/html/commit/513431013267647999f0438b4a8f73031ba3da2e>

[546] [CITE@en[Initialize document CSP in html needs to be updated · Issue #364 · w3c/webappsec-csp]]
([TIME[2019-05-29 21:28:49 +09:00]])
<https://github.com/w3c/webappsec-csp/issues/364>

[547] [CITE@en[Modified initialized document's CSP to match changes in CSP spec by andypaicu · Pull Request #4190 · whatwg/html]]
([TIME[2019-05-29 21:29:00 +09:00]])
<https://github.com/whatwg/html/pull/4190>

[548] [CITE@en[Handle a null request in init document csp algorithm (#372)]]
([[andypaicu]]著, [TIME[2018-12-01 21:28:10 +09:00]])
<https://github.com/w3c/webappsec-csp/commit/b294bec3b1cb4d48feb616a80cc988dff9b6da83>

[549] [CITE@en[Handle a null request in init document csp algorithm by andypaicu · Pull Request #372 · w3c/webappsec-csp]]
([TIME[2019-05-31 15:10:30 +09:00]])
<https://github.com/w3c/webappsec-csp/pull/372>

[550] [CITE@en[Initialize document CSP in html needs to be updated · Issue #364 · w3c/webappsec-csp]]
([TIME[2019-05-31 15:10:43 +09:00]])
<https://github.com/w3c/webappsec-csp/issues/364>

[551] [CITE@en[Consider downloading rather than rendering resources delivered over FTP. · Issue #4178 · whatwg/html]]
([TIME[2019-05-31 18:31:25 +09:00]])
<https://github.com/whatwg/html/issues/4178>

[552] [CITE@en[Specify a navigated-to new document's URL]]
([[jyasskin]]著, [TIME[2018-12-19 07:43:57 +09:00]])
<https://github.com/whatwg/html/commit/f2c7ea37eed6346affa6f8d336eb63173e39ac45>

[182] [CITE@en[Setting the document's address doesn't seem to be correct · Issue #3953 · whatwg/html]]
([TIME[2019-06-01 11:33:16 +09:00]])
<https://github.com/whatwg/html/issues/3953>

[557] [CITE@en[Consider not special casing document's address handling when loading javascript: · Issue #1565 · whatwg/html]]
([TIME[2019-06-01 11:33:48 +09:00]])
<https://github.com/whatwg/html/issues/1565>

[558] [CITE@en[Specify a new document's URL by jyasskin · Pull Request #4205 · whatwg/html]]
([TIME[2019-06-01 11:34:30 +09:00]])
<https://github.com/whatwg/html/pull/4205>

[559] [CITE@en[Remove XML loading's namespace-based dispatching]]
([[annevk]]著, [TIME[2019-02-22 00:24:09 +09:00]])
<https://github.com/whatwg/html/commit/38cac772c17218cb01ef92e8a8f5aec2c386b127>

[561] [CITE@en[Does any browser still implement namespace-based dispatching? · Issue #2656 · whatwg/html]]
([TIME[2019-06-24 18:03:08 +09:00]])
<https://github.com/whatwg/html/issues/2656>

[562] [CITE@en[Remove XML loading's namespace-based dispatching by annevk · Pull Request #4384 · whatwg/html]]
([TIME[2019-06-24 18:04:46 +09:00]])
<https://github.com/whatwg/html/pull/4384>

[563] [CITE@en[Editorial: initialize feature policy before document creation]]
([[dtapuska]]著, [TIME[2019-07-19 01:23:50 +09:00]])
<https://github.com/whatwg/html/commit/2a397f6a8fce75855fa84785b3b952f9e6fce2d9>

[565] [CITE@en[Expose new algorithms to create a Feature Policy before document is c… by dtapuska · Pull Request #324 · w3c/webappsec-feature-policy]]
([TIME[2020-05-14 15:30:51 +09:00]])
<https://github.com/w3c/webappsec-feature-policy/pull/324>

[566] [CITE@en[Use the newly exposed methods to initialize feature policy. by dtapuska · Pull Request #4772 · whatwg/html]]
([TIME[2020-05-14 15:31:02 +09:00]])
<https://github.com/whatwg/html/pull/4772>

[570] [CITE@en[Make fragment loop not depend on spin the event loop]]
([[annevk]]著, [TIME[2019-06-28 16:59:42 +09:00]])
<https://github.com/whatwg/html/commit/e62a7be6f3161993b82e9d8469ba2e64a3c6a2a6>

[583] [CITE@en[Make fragment loop not depend on spin the event loop]]
([[annevk]]著, [TIME[2019-06-28 16:59:42 +09:00]])
<https://github.com/whatwg/html/commit/e62a7be6f3161993b82e9d8469ba2e64a3c6a2a6>

[584] [CITE@en[Make fragment loop not depend on spin the event loop by annevk · Pull Request #4440 · whatwg/html]]
([TIME[2020-07-14 14:23:08 +09:00]])
<https://github.com/whatwg/html/pull/4440>

[587] [CITE@en[Editorial: factor out and clean up javascript: URL processing]]
([[domenic]]著, [TIME[2019-02-28 03:55:35 +09:00]])
<https://github.com/whatwg/html/commit/e13762fb626dfd64e7639b79cb61a766d66bd72f>

[588] [CITE@en[Editorial: factor out and clean up javascript: URL processing by domenic · Pull Request #4396 · whatwg/html]]
([TIME[2020-09-19 18:42:06 +09:00]])
<https://github.com/whatwg/html/pull/4396>

[589] [CITE@en[Fix document URL setting for javascript: URLs]]
([[TimothyGu]]著, [TIME[2019-07-06 04:11:39 +09:00]])
<https://github.com/whatwg/html/commit/06aa2d682b731e5ebc72169c63744e8608418dd8>

[590] [CITE@en[Fix document URL setting for javascript: URLs by TimothyGu · Pull Request #4698 · whatwg/html]]
([TIME[2020-09-19 19:15:29 +09:00]])
<https://github.com/whatwg/html/pull/4698>

[592] [CITE@en[Editorial: move navigation document initialization]]
([[domenic]], [TIME[2019-02-28 03:56:12 +09:00]], [TIME[2021-03-26T11:56:57.000Z]])
<https://github.com/whatwg/html/commit/91902bd54391f4eb71547e33d14e4bc552040b1c>

[594] [CITE@en[Move stuff out of the middle of "process a navigate response" · Issue #3327 · whatwg/html]]
([TIME[2021-03-26T12:18:13.000Z]])
<https://github.com/whatwg/html/issues/3327>

[595] [CITE@en[Editorial: move navigation document initialization by domenic · Pull Request #4397 · whatwg/html]]
([TIME[2021-03-26T12:18:57.000Z]])
<https://github.com/whatwg/html/pull/4397>

[596] [CITE@en[Refactor the navigation algorithm]]
([[dtapuska]], [TIME[2019-07-12 00:49:55 +09:00]], [TIME[2021-07-01T09:35:49.000Z]])
<https://github.com/whatwg/html/commit/061e782437c6cff600f18bc96c1a11489e09c3ab>

[103] [CITE@en[Refactor navigation algorithm. by dtapuska · Pull Request #4664 · whatwg/html]]
([TIME[2021-07-02T08:22:24.000Z]])
<https://github.com/whatwg/html/pull/4664>

[119] [CITE@en[Snapshot sandbox at the start of navigation]]
([[clelland]], [TIME[2019-11-26 01:42:48 +09:00]], [TIME[2022-01-14T09:55:25.000Z]])
<https://github.com/whatwg/html/commit/eb13fece2cadc45863dc61079358b72478756f8b>

[247] [CITE@en[Snapshot sandbox at start of navigation. by clelland · Pull Request #5098 · whatwg/html]]
([TIME[2022-01-14T10:33:36.000Z]])
<https://github.com/whatwg/html/pull/5098>

[255] [CITE@en[Editorial: nested browsing context is a member, not a type]]
([[annevk]], [TIME[2019-11-27 02:46:03 +09:00]], [TIME[2022-01-18T09:49:46.000Z]])
<https://github.com/whatwg/html/commit/6b737bbc428facf34ec3728c0912cf9e172d0ea4>

[256] [CITE@en[Revamp the user activation model]]
([[mustaqahmed]], [TIME[2019-12-05 04:09:23 +09:00]], [TIME[2022-01-25T07:34:08.000Z]])
<https://github.com/whatwg/html/commit/8f8c1f50158736b3cf16188377a0974a20367c8b>

[259] [CITE@en[Make "triggered by user activation" match browser behavior · Issue #1903 · whatwg/html]]
([TIME[2022-01-25T07:58:31.000Z]])
<https://github.com/whatwg/html/issues/1903>

[261] [CITE[Chapter 35 -- Adding Additional Protocols to HotJava]], [TIME[2022-12-13T09:22:04.000Z]], [TIME[2002-04-30T22:16:14.152Z]] <https://web.archive.org/web/20020430221538/http://docs.rinet.ru:8083/JSol/ch35.htm>

[262] >>261 [CODE[whois:]] の実装例

[260] [CITE[A Browser Front End For CORBA Objects - 1127.pdf]], [TIME[2001-02-07T05:07:04.000Z]], [TIME[2022-12-13T09:20:30.586Z]] <http://www10.org/cdrom/posters/1127.pdf>

[CODE[iiopname:]] ページを表示できるように拡張した [[HotJava]]

