abort a document

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.stop や document.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] fetch をabortさせます。
  5. [14] 文書の活性構文解析器が null でない'場合、
    1. [67] 文書の活性構文解析器がabortされたを、 真に設定します。
    2. [68] 構文解析器をabortします。
    3. [71] 文書の salvageable を、 偽に設定します。

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

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

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

[30] fetch が abort されるため、同じ起源への接続を使った大量の 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] Chrome の window.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

[65] Fix Window's close(d) members (annevk著, ) https://github.com/whatwg/html/commit/37b1ce5ed31725fa7b3c64e27e3cc10aa15a791f

[66] Ignore document.open/write after the active parser has been aborted (foolip著, ) https://github.com/whatwg/html/commit/ead4aa8ec576d7d330a04f7ec8508e336b895fdb

[72] Consider adding an "ignore document.open/write" flag on document · Issue #4723 · whatwg/html · GitHub () https://github.com/whatwg/html/issues/4723

[73] Ignore document.open/write after the active parser has been aborted by foolip · Pull Request #4907 · whatwg/html · GitHub () https://github.com/whatwg/html/pull/4907