構文解析器のabort

abort (Web)

[28] 文書構文解析器abort すると、 fetch構文解析器を中断することができます。 abort 操作は何種類かあります。

仕様書

利用者インターフェイス

[6] 利用者文書に関する次のタスクを追加する方法を提供して構いません >>4

タスク
処理
  1. 文書活性文書なら、単純イベントを発火するべきです
    単純イベント
    イベント型
    abort
    対象
    文書Window
  2. 文書のabortを実行します。

[8] タスク源は不明です。
[7] この「中止」 (「停止」) 機能は、 かつてはメニューバーボタンなどとして提供するのが普通でした。 現在は再読込ボタンが navigate 中のみ中止ボタンに差し替わることが多くなっています。 (再読込したい時にボタンが差し替わっているので不便だと思う人もいます。)

[38] WebブラウザーRefresh による遷移を拒む手段を提供することを認められています。 中止ボタンはその機能も持っているかもしれません。

[40] かつてはアニメーションGIFの再生停止機能も中止ボタンが持っている Webブラウザーもありました。

Window インターフェイス stop メソッド

[37] Window インターフェイスstop メソッドは、 次のようにしなければなりません >>36

  1. [54] 文脈オブジェクト被関連付けDocumentについて、 文書読み込みを停止します。

[55] 文書について文書読み込みを停止 (stop document loading) するには、 次のようにします HTML Standard

  1. [56] 文書活性文書の場合、
    1. [57] ここで停止します。
  2. [58] 閲覧文脈を、 文書閲覧文脈に設定します。
  3. [59] 閲覧文脈について navigate を実行中で、 それが unload a document の実行中ではない場合、
    1. [60] 当該 navigate を取り消します。
  4. [61] 文書abortします。

[62] window.stopdocument.open から呼び出されます。

文書の abort

[5] 文書abort するとは、次のようにしなければなりません >>4

  1. [11] すべての子供閲覧文脈活性文書abort します。
  2. [12] 前項の abort によりいずれかの文書salvageableとなったら、 文書salvageableに設定します。
  3. [33] 文書における fetch があれば、
    1. [49] 文書salvageable を、に設定します。
  4. [13] 文書における fetch fetch について、それぞれ、
    1. [31] fetchabortさせます。
  5. [14] 文書活性構文解析器を持っていれば、これを abort し、 文書salvageableに設定します。

[29] 次の場面で、文書のabortが呼び出されることがあります。

[48] 文書のabortの発生する場面
[42] WebSocketEventSource は、 unloading document cleanup steps で停止処理が呼び出されます。 unloading document cleanup steps文書を捨てるなどから呼び出されます (から、 abort と必ずしも同じタイミングではありません)。 (EventSourcefetch でもあるので、両方の処理が実行されることになります。)

[44] 構文解析器abort が停止されますから、 script 要素からの呼び出しの場合、当該要素が最後の要素となり、 文書のソースの続きの部分は完全に無視されます。

[30] fetchabort されるため、同じ起源への接続を使った大量の fetch が進行中でも、それとは別に navigate のための新たな fetch を開始できます。

[45] Chrome では、待機中の Refresh も破棄されます。

構文解析器の abort

[9] 構文解析器abort (abort a parser) は、 次のようにしなければなりません

  1. [15] 入力ストリームの現在の未処理の内容および今後追加されるであろう内容を破棄します >>10
  2. [16] 文書現在文書準備度interactive に設定します >>10
  3. [70] 単純イベントを発火します。 >>69
    単純イベント
    イベント型
    readystatechange
    対象
    文書
  4. [17] 開いている要素のスタックからすべての節点pop します >>10
  5. [18] 文書現在文書準備度complete に設定します >>10
  6. [41] 単純イベントを発火します。 >>69
    単純イベント
    イベント型
    readystatechange
    対象
    文書
  7. [24] 構文解析器abort 済みフラグを設定します。

[19] pop は副作用を持つことがあります。開いている要素のスタックを参照。
[25] abort 済みフラグは、活性構文解析器かどうかの判定に用いられます。

[20] 構文解析器abort は、 HTML構文解析器でも XML構文解析器でも実行できます。

[21] 構文解析器abort は、文書のabort から呼び出されます。

[22] 構文解析器abort は、構文解析器構文解析エラーを検出した時に呼び出すこともできます。

[23] これは適合性検査器など特別な用途を想定していて、Webブラウザーなどでは不適切な動作です。
[39] abort は、 stops parsing により正常終了しない場合にかわりに呼び出されます。

[26] abort 済みフラグは、活性構文解析器かどうかの判定で用いられます。

[27] abort 済みフラグは、HTML構文解析器script 終了タグスクリプトを実行するかに影響します。

[46] Chromewindow.stop は、 interactive の方の readystatechange発火しないようです。

その他の abort

[32] fetchのabort も参照。

歴史

[1] Document Object Model Load and Save ( 版) http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619/load-save.html#LS-DocumentLS-abort

[2] (X)HTML5 Tracking ( 版) http://html5.org/tools/web-apps-tracker?from=4038&to=4039

[3] Web Applications 1.0 r5643 Define how location.href='foo' aborts parsing.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=10625 ( ( 版)) http://html5.org/tools/web-apps-tracker?from=5642&to=5643

[34] [whatwg] Firing all the "the end" messages on abort ( ( 版)) http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-November/038207.html

[35] Web Applications 1.0 r8142 Explain how window.stop() affects window.stop() ( ( 版)) http://html5.org/tools/web-apps-tracker?from=8141&to=8142

[43] Only set state to unsent in abort() when done · whatwg/xhr@36e8b3c ( 版) https://github.com/whatwg/xhr/commit/36e8b3ce2b8ce7f7d08a4020a8dd6c72fcd73ba3

[47] Reset response for abort() during DONE (annevk著, ) https://github.com/whatwg/xhr/commit/daecfff02e0a95776f305097a752148071d58d07

[50] Editorial: modernize the style of various document-accepting algorithms (musgravejw著, ) https://github.com/whatwg/html/commit/8bd6fb3972aab1debd2c562b31617e7d3da2377b

[51] Various algorithms should take an explicit document argument · Issue #3638 · whatwg/html () https://github.com/whatwg/html/issues/3638

[52] Editorial: Add Document to argument list explicitly for document algorithms by musgravejw · Pull Request #3639 · whatwg/html () https://github.com/whatwg/html/pull/3639

[53] document.open(): only abort when there is a navigation (TimothyGu著, ) https://github.com/whatwg/html/commit/1ca520a308ffd6a3c5f7fc26a67338c145af8376

[63] Unclear what exactly should be aborted in document.open() · Issue #3975 · whatwg/html () https://github.com/whatwg/html/issues/3975

[64] document.open(): only abort when there is a navigation by TimothyGu · Pull Request #3999 · whatwg/html () https://github.com/whatwg/html/pull/3999