[15] [DFN[[CODE(JS)@en[[[document.all]]]]]] は、[[文書]]中のすべての[[要素]]を含む[[コレクション]]です。
この[[オブジェクト]]は [[IE4 DOM]] の一部であり、現在では[[廃止]]状態とされています [SRC[>>14]] が、
[[Webブラウザー]]が実装しなければならない [SRC[>>14]] 機能の一つとされており、
すべての [[Webブラウザー]]が対応しています。

* 仕様書

[REFS[
- [14] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#dom-document-all>'''
- [13] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-03-10 07:13:01 +09:00]] 版) <https://html.spec.whatwg.org/#htmlallcollection>
- [60] [CITE@en[DOM Standard]] ([TIME[2016-03-07 17:31:44 +09:00]] 版) <https://dom.spec.whatwg.org/#htmlcollection>
]REFS]

* [CODE(DOMi)@en[Document]] オブジェクト [CODE(DOMa)@en[all]] 属性 (DOM)

[16] [CODE(DOMi)@en[[[Document]]]] [[インターフェイス]]の [CODE(DOMa)@en[[[all]]]] [[属性]]は、
[CODE(DOMi)@en[[[HTMLAllCollection]]]] [[オブジェクト]]を返す[[読み取り専用]]の[[IDL属性]]です。
この[[オブジェクト]]は当該 [CODE(DOMi)@en[[[Document]]]] を[[根]]とし、
すべての[[要素]]に[[一致]]する[[フィルター]]を持つものでなければ[['''なりません''']]。
[SRC[>>14]]

[37] この[[属性]]は、毎回同じオブジェクトを返します ([CODE(IDL s)@en[SameObject]])。
つまり[[文書]]にはちょうど1つだけ [CODE(DOMa)@en[[[all]]]] [[オブジェクト]]が存在します。

* [CODE(DOMi)@en[HTMLAllCollection]] インターフェイス (DOM)

[23] [DFN[[CODE(DOMi)@en[HTMLAllCollection]]]] [[オブジェクト]]は、
[CODE(JS)@en[document.all]] [[IDL属性]]で用いられる[[コレクション]]です。

;; [58] [[HTML Standard]] は [CODE(DOMi)@en[HTMLAllCollection]]
が[[コレクション]]だと (なぜか) 明記はしていませんが、
[CODE(DOMi)@en[HTMLCollection]] と似ている [SRC[>>13]]
とし、[[コレクション]]の用語を使って規定されています。

[27] [CODE(DOMi)@en[HTMLAllCollection]]
[[インターフェイス]]は[[文書環境]]で [[JavaScriptに晒され]]ています [SRC[>>13]]。

[38] この[[オブジェクト]]は[[生きて]]おり、[[DOM木]]に対する変更が即時反映されます。

;; [45] かつては [CODE(DOMi)@en[[[HTMLCollection]]]] を[[継承]]していましたが、
現在は独立しています [SRC[>>44]]。

** メンバー

[24] [CODE(DOMi)@en[[[HTMLAllCollection]]]] には、[[継承]]するものも含めて次のメンバーがあります。

[FIG(middle list)[
- [CODE(DOMm)@en[item][item (DOM)]]
- [CODE(DOMa)@en[length][length (DOM)]]
- [CODE(DOMm)@en[[[namedItem]]]]
- [[supported property indices]]
- [[supported property names]]
- [[legacy caller]]
]FIG]

[57] [CODE(DOMa)@en[length]] [[IDL特性]]以外は、すべて、
[[索引]]や[[名前]]で[[要素]]を取得するものです。
つまり、次のような方法で[[要素]]にアクセスできます。

[FIG(list middle)[
- [CODE(JS)@en[document.all [ [VAR[索引]] ] ][indexed getter]]
- [CODE(JS)@en[document.all [ [VAR[名前]] ] ][named getter]]
- [CODE(JS)@en[document.all ( [VAR[索引]] ) ][legacycaller]]
- [CODE(JS)@en[document.all ( [VAR[名前]] ) ][legacycaller]]
- [CODE(JS)@en[document.all.item ( [VAR[索引]] ) ][item (DOM)]]
- [CODE(JS)@en[document.all.item ( [VAR[名前]] ) ][item (DOM)]]
- [CODE(JS)@en[document.all.namedItem ( [VAR[名前]] ) ][namedItem]]
]FIG]

* JavaScript 束縛

[94] [CODE[HTMLAllCollection]] [[インターフェイス]]を[[実装]]する[[オブジェクト]]は、
[[legacy platform object]] です [SRC[[CITE[HTML Standard]]]]。

[59] [CODE(DOMi)@en[HTMLAllCollection]]
[[オブジェクト]]には、 [[JavaScript]] にて他の[[プラットフォームオブジェクト]]とは異なる特別な取り扱いが規定されています。
すなわち、 [CODE(DOMi)@en[HTMLAllCollection]]
[[オブジェクト]]は、
[F(ss)[IsHTMLDDA]] [[内部スロット]]を持ちます [SRC[[CITE[HTML Standard]]]]。

[17] [CODE(JS)@en[[[document.all]]]] [[オブジェクト]]に [[JavaScript]] [CODE(JS)@en[[[ToBoolean()]]]] 
[[演算]]を適用すると、[[偽]]を返さなければ[['''なりません''']]。 [SRC[>>14]]

[18] [CODE(JS)@en[[[document.all]]]] [[オブジェクト]]に [[JavaScript]] の[[抽象等値性比較]]
([CODE(JS)@en[[[==]]]] や [CODE(JS)[[[!=]]]]
の[[演算子]]) を適用すると、[CODE(JS)@en[[[undefined]]]] や [CODE(JS)@en[[[null]]]] 
と同じように振る舞わなければ[['''なりません''']]。 [SRC[>>14]]

;; [19] [CODE(JS)[[[===]]]] や [CODE(JS)[[[!==]]]] に関しては、普通の[[オブジェクト]]と同じように振る舞います。

[20] [CODE(JS)@en[[[document.all]]]] [[オブジェクト]]に [[JavaScript]] の [CODE(JS)@en[[[typeof]]]]
[[演算子]]を適用すると、[[文字列]] [CODE(JS)@en[[[undefined]]]] を返さなければ[['''なりません''']]。 [SRC[>>14]]

[21] これらの要件は、通常の[[オブジェクト]]の動作とは異なりますが、歴史的経緯のために必要
[SRC[>>14]] とされています。

[HISTORY[
[22] かつて [CODE(JS)@en[[[document.all]]]] は [[IE]] のみが実装していたため、 [[IE]]
であるかどうかの判別に用いられることがありました。すなわち、
[PRE(JS example code)[
if (document.all) {
  // for IE
} else {
  // for non-IE
}
]PRE]
... で [[IE]] 以外の[[近代的ブラウザー]]は後者が実行される必要がありました。一方で、 [[IE]]
のみに対応していて [CODE(JS)@en[[[document.all]]]] が実装されていなければ動作しない
[[Webサイト]]も存在していました。この両方のパターンに対応するため、 [CODE(JS)@en[[[document.all]]]]
[[オブジェクト]]は条件式においては [CODE(JS)@en[[[undefined]]]] と同じように動作する実装がなされました。
現在では [[IE]] も[[近代的ブラウザー]]と [[HTML Standard]] に従っています。
]HISTORY]

* 索引による要素へのアクセス

[61] [CODE(DOMi)@en[HTMLAllCollection]] の [[supported property indices]]
は、 [CODE(DOMi)@en[HTMLCollection]] の場合と同じです [SRC[>>13]]。
つまり、
[ 0, 当該[[コレクションにより表現される]][[要素]]の数 - 1 ]
の[[範囲]]の[[整数]]です [SRC[>>60]]。

;; [62] 従って、 [VAR[n]] を 0 [[以上]]、[[文書]]中の[[要素]]数 - 1
の[[整数]]とするとき、 [CODE(JS)@en[document.all [ [VAR[n]] ] ][indexed getter]]
が存在し、それ以外の[[整数]] [VAR[n]] については存在しません。

[78] [CODE(DOMi)@en[HTMLAllCollection]] の [[indexed getter]] は、
次のようにしなければ[MUST[なりません]] [SRC[>>13]]。
[FIG(steps)[
= [79] [[get the "all"-indexed element]] を実行した結果を返します。
ただし[VAR[コレクション]]は[[文脈オブジェクト]]、
[VAR[索引]]は与えられた[[索引]]とします。
]FIG]

[67] [CODE(DOMi)@en[HTMLAllCollection]] [VAR[コレクション]]と[[索引]][VAR[索引]]について
[DFN[get the "all"-indexed element]] とは、次のようにすることです [SRC[>>13]]。
[FIG(steps)[
= [68] [VAR[コレクション]]に含まれる[[要素]]で[VAR[索引]]番目のものがあれば、
== [69] [VAR[コレクション]]に含まれる[[要素]]で[VAR[索引]]番目のものを返します。
= [70] それ以外なら、
== [71] [[null]] を返します。
]FIG]

[66] [CODE(DOMi)@en[HTMLAllCollection]] [[インターフェイス]]の
[CODE(DOMa)@en[length][length (DOM)]] [[IDL属性]]は、
[[取得時]]、[[文脈オブジェクト]]である[[コレクションにより表現]]される[[要素]]の数を返さなければ[MUST[なりません]]
[SRC[>>13]]。

* 名前による要素へのアクセス

[35] [CODE(HTMLi)@en[HTMLAllCollection]] の [[supported property names]] は、
[[コレクションにより表現]]される[[要素]]の名前 (あれば) のリストです [SRC[>>13]]。

;; [65] 従って、 [VAR[s]] を要素の名前とするとき、 [CODE(JS)@en[document.all [ [VAR[s]] ] ][named getter]]
が存在します。

[33] [CODE(DOMi)@en[[[HTMLAllCollection]]]] における[[要素]]の[[名前]]とは、
[CODE(HTMLa)@en[[[name]]]] [[属性値]]と [[ID]] のことをいいます。

[34] ただし [CODE(HTMLa)@en[[[name]]]] [[属性]]が用いられるのは
[DFN[[RUBYB[[[「all」名前付き要素]]]@en["all"-named elements]]]]に限られます。
「all」名前付き要素とは、 [[HTML]] の
[FIG(short list)[
- [CODE(HTMLe)@en[[[a]]]]
- [CODE(HTMLe)@en[[[applet]]]]
- [CODE(HTMLe)@en[[[button]]]]
- [CODE(HTMLe)@en[[[embed]]]]
- [CODE(HTMLe)@en[[[form]]]]
- [CODE(HTMLe)@en[[[frame]]]]
- [CODE(HTMLe)@en[[[frameset]]]]
- [CODE(HTMLe)@en[[[iframe]]]]
- [CODE(HTMLe)@en[[[img]]]]
- [CODE(HTMLe)@en[[[input]]]]
- [CODE(HTMLe)@en[[[map]]]]
- [CODE(HTMLe)@en[[[meta]]]]
- [CODE(HTMLe)@en[[[object]]]]
- [CODE(HTMLe)@en[[[select]]]]
- [CODE(HTMLe)@en[[[textarea]]]]
]FIG]
... です [SRC[>>13]]。

;; [40] このリストは[[ブラウザー]]によって相違がありますが、 
[[HTML Standard]] は広めにとっているようです。
コメントに「keygen?」ともあります [SRC[>>39]]。

[36] ただし[[空文字列]]は名前とはみなされません。

[63] 順序は[[木順]]で、重複する場合は最初の方が採用されます [SRC[>>13]]。

[64] [CODE(HTMLa)@en[[[id]]]] と [CODE(HTMLa)@en[[[name]]]] の両方がある[[要素]]があれば、
[CODE(HTMLa)@en[[[id]]]] が先に現れたと考えます [SRC[>>13]]。

[29] [CODE(DOMi)@en[HTMLAllCollection]] の [CODE(DOMm)@en[namedItem]] [[メソッド]]と
[[named getter]] は、
次のようにしなければ[MUST[なりません]] [SRC[>>13]]。
[FIG(steps)[
= [80] [VAR[名前]]を、第1引数を[[文字列]]として解釈した結果に設定します。
= [30] [VAR[名前]]について [[get the "all"-named element(s)]] を実行した結果を返します。
[VAR[コレクション]]は、[[文脈オブジェクト]]とします。
]FIG]

[72] [CODE(DOMi)@en[HTMLAllCollection]] [VAR[コレクション]]と名前[VAR[名前]]について
[DFN[get the "all"-named element(s)]] とは、次のようにすることです [SRC[>>13]]。
[FIG(steps)[
= [73] [VAR[名前]]が[[空文字列]]なら、 [[null]] を返してここで停止します。
= [74] [VAR[部分コレクション]]を、新しい [CODE(DOMi)@en[HTMLCollection]]
に設定します。
[FIG(list members)[
: [F[根]] : [VAR[コレクション]]の[F[根]] ([[文書]])
: [F[フィルター]] :
当該[[節点]]が
[["all"-named elements]] で [CODE(HTMLa)@en[name]] [[属性]]が[VAR[名前]]と等しいか、
[[要素]]で [F[ID]] が[VAR[名前]]と等しいなら、[[真]]
]FIG]
= [75] [VAR[部分コレクション]]に含まれる[[節点]]の数により、
[FIG(switch)[
: [81] 0個の場合 :
[[null]] を返します。
: [76] 1個の場合 :
[VAR[部分コレクション]]に含まれる[[要素]]を返します。
: [77] それ以外の場合 :
[VAR[部分コレクション]]を返します。
]FIG]
]FIG]

;; [31] つまり、同じ名前の[[要素]]の個数により、[[要素]]が返されたり、
[CODE(DOMi)@en[HTMLCollection]] が返されたりします。
(ここで [CODE(DOMi)@en[HTMLAllCollection]] ではなく [CODE(DOMi)@en[HTMLCollection]]
であることにも注意。)

;; [32] なお、同じ条件の [CODE(DOMi)@en[HTMLCollection]] を返すことになっても、
毎回同じ[[オブジェクト]]を返すことは求められていないようです。

* [CODE(DOMm)@en[item]] メソッドと legacycaller

[25] [CODE(DOMi)@en[HTMLAllCollection]] の [CODE(DOMm)@en[item][item (DOM)]]
[[メソッド]]は、次のようにしなければ[MUST[なりません]] [SRC[>>13]]。

[FIG(steps)[
= [26] [VAR[名前]]を、第1引数を[[省略可能]]な[[文字列]]と解釈した結果に設定します。
= [97] [VAR[名前]]が省略されている場合、
== [98] [CODE[null]] を返します。
= [99] それ以外の場合、
== [95] [[文脈オブジェクト]]と[VAR[名前]]について
[[get the "all"-indexed or named element(s)]]
した結果を返します。
]FIG]

[83] [CODE(DOMi)@en[HTMLAllCollection]] [[オブジェクト]]の
[F(ss)[Call]] は、[VAR[this]]、[VAR[引数リスト]]について、次のようにします
[SRC[>>13]]。

[FIG(steps)[
= [100] [VAR[引数リスト]]の[F[サイズ]]が [N[0]] か、
[VAR[引数リスト]] [ [N[0]] ]] が [CODE(JS)@en[undefined]] の場合、
== [101] [CODE[null]] を返します。
= [105] それ以外の場合、
== [102] [VAR[名前]]を、
[VAR[引数リスト]] [ [N[0]] ] を [CODE[DOMString]] に[[変換][変換 (Web IDL)]]した結果に設定します。
== [103] [VAR[結果]]を、[[文脈オブジェクト]]と[VAR[名前]]について
[[get the "all"-indexed or named element(s)]] した結果に設定します。
== [104] [VAR[結果]]を [[JavaScript値]] に[[変換][変換 (Web IDL)]]した結果を返します。
]FIG]

;; [106] [[文脈オブジェクト]]の結果が返され、 [CODE[this]] は無視されます。

[96] [CODE(DOMi)@en[HTMLAllCollection]] [VAR[コレクション]]と[VAR[名前]]について
[DFN[get the "all"-indexed or named element(s)]] するには、
次のようにします [SRC[>>13]]。

[FIG(steps)[
= [86] [VAR[名前]]が[[配列索引特性名]]の場合、
== [84] [VAR[索引]]を、[VAR[名前]]に [CODE[ToUint32]] を適用した結果に設定します。
== [85] [VAR[コレクション]]と[VAR[索引]]について 
[[get the "all"-indexed element]] を実行した結果を返します。
= [87] それ以外の場合、
== [82] [VAR[コレクション]]と[VAR[名前]]について 
[[get the "all"-named element(s)]] を実行した結果を返します。
]FIG]

[88] つまり [CODE(DOMm)@en[item][item (DOM)]] [[メソッド]]は[[引数]]によって
[[indexed getter]] のように動作したり、 [[named getter]] のように動作したりします。

* 歴史

** IE4

[49] [CODE(JS)@en[document.all]] は [[IE4 DOM]] で追加されました。 [[Netscape]] [[DOM0]] の
[CODE(JS)@en[document.links]] や [CODE(JS)@en[document.forms]]
などに対して、すべての種別の[[要素]]、という意味で「all」と命名されたものと思われます。

[51] その後標準化された [[DOM1]] は [CODE(JS)@en[document.all]]
を含んでいませんでした。名前によって[[要素]]にアクセスする機能は、
[CODE(DOMm)@en[getElementByName]] と [CODE(DOMm)@en[getElementById]]
という ([[Java]] の洗礼を受けたのか) 異様に長い名前の[[メソッド]]になりました。

** 00年代

[52] [CODE(JS)@en[document.all]] は [[IE]] しか実装しませんでしたが、
短く使いやすかったので、少なくない [[Webページ]]がこれを使っていました。

[53] [[W3C]] はずっとこの現実を無視していましたが、
[[Webブラウザー]]は現実の [[Webサイト]]との互換性の要求から、
非標準でありながらも [CODE(JS)@en[document.all]] を実装せざるを得なくなりました。

[54] [[Firefox]] は[[標準モード]]ではこれを実装しないことで最後まで抵抗を続けましたが、
[[奇癖モード]]では実装せざるを得ませんでした。

[55] 一方で、[[IE]] のみが実装していた時代に、 [CODE(JS)@en[document.all]]
の有無で [[IE]] とそれ以外の[[Webブラウザー]]を分岐する悪習が広まっていました。
[CODE(JS)@en[document.all]] を実装しなければならないが、
[CODE(JS)@en[if (document.all) { ... }]] を実行してはならない、
という難題でありましたが、 [CODE(JS)@en[document.all]] [[オブジェクト]]は[[比較]]時に[[偽]]と[[評価]]される、
との特例で解決されることとなりました。

;; [56] このような動作は本来 [[JavaScript]] では認められておらず、
[CODE(JS)@en[document.all]] の他はかつて [CODE(JS)@en[styleFloat]]
[[メソッド]]で行われたくらいです。

[FIG(quote)[
[FIGCAPTION[
[1] [CITE[DOMNodeInserted と DOMNodeRemoved に似た仕組みを IE でも使えるようにして、セレクタの実行結果をキャッシュする - uupaaの開発日記]] ([TIME[2008-12-27 13:51:49 +09:00]] 版) <http://d.hatena.ne.jp/uupaa/20081127/1227726901>
]FIGCAPTION]

>
-DOMNodeInserted, DOMNodeRemoved
-- document.all.length でノード数を調べることで検出します。事前に作成されているコレクションを参照するため、かなり高速です。
-- このやり方では、挿入, 削除されたタイミングを動的に知ることはできません。
-- Firefoxの標準準拠モード以外なら、ほぼ全てのモダンブラウザで使えます。
]FIG]

[2] [[DSiブラウザ]]で [CODE(JS)@en[[[document.all]]]] は[[真]]になります・・・。

** HTML5

[50] 結局ほとんどすべての [[Webブラウザー]]が [CODE(JS)@en[document.all]]
を実装したことで、 [[HTML5]] も「廃止機能」 ([[Webブラウザー]]は実装しなければならないが、
[[著者]]が使うべきではない機能) として [CODE(JS)@en[document.all]]
を規定することになりました。

[3] [CITE[IRC logs: freenode / #whatwg / 20101115]]
( ([TIME[2010-11-20 21:48:00 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20101115#l-625>

[4] [CITE@en[Web Applications 1.0 r6900     Update HTMLAllCollection.item(DOMString) to act like namedItem.]]
( ([TIME[2012-01-18 08:02:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6899&to=6900>

[5] [CITE@en[RE: Make Microsoft follow the spec.]]
( ([[Chris Wilson]] 著, [TIME[2001-03-06 01:49:38 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-html/2001Mar/0026.html>

[6] [CITE@en[Web Applications 1.0 r7624     Clarify the document.all black magic.]]
( ([TIME[2012-12-31 13:57:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7623&to=7624>

[7] [CITE@en[Web Applications 1.0 r7798     Fix document.all since DOM changed out from under us... also, ack for previous checkin]]
( ([TIME[2013-04-10 06:48:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7797&to=7798>

[8] [CITE@en[Web Applications 1.0 r8469     Remove some parts of document.all that data shows have virtually no usage.]]
( ([TIME[2014-02-07 04:35:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8468&to=8469>

[9] [CITE@en[Re: twitter, document.all]]
( ([[Ms2ger]] 著, [TIME[2014-02-13 19:42:45 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-archive/2014Feb/0012.html>

[10] [CITE@en[Web Applications 1.0 r8502     Restore document.all() legacycaller, for compat]]
( ([TIME[2014-02-22 07:12:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8501&to=8502>

[11] [CITE@en[Web Applications 1.0 r8469     Remove some parts of document.all that data shows have virtually no usage.]]
( ([TIME[2014-02-07 04:35:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8468&to=8469>

[12] [CITE@en[Web Applications 1.0 r8010     Make the empty string no longer be a possible index for most objects that can be indexed by name.]]
( ([TIME[2013-07-03 06:45:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8009&to=8010>

[39] [CITE@en[Web Applications 1.0 r8501     Update the list of elements that support name='[SPAN[']] attributes for the purposes of document.all (mostly using the IE/Firefox lists, which are nearly identical, and a superset of Safari/Chrome)]]
([TIME[2014-02-22 07:09:00 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=8500&to=8501>

[41] [CITE@en[HTML Standard Tracker]]
( ([TIME[2014-05-22 02:46:29 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8644&to=8645>

[42] [CITE[Intent to Deprecate and Remove: document.all. - Google グループ]]
([TIME[2015-01-30 17:52:41 +09:00]] 版)
<https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/urMtTTPpUro>

[43] [CITE@ja[ブラウザ JavaScript]]
([TIME[2015-03-14 20:55:49 +09:00]] 版)
<http://www.opera.com/docs/browserjs/>

[44] [CITE@en[Fix #210: give HTMLAllCollection its own class · whatwg/html@4bade08]] ([TIME[2015-10-07 20:29:09 +09:00]] 版) <https://github.com/whatwg/html/commit/4bade08fff14d95011e2709cb2ba47e859c0a690>

[46] [CITE@en[Update ECMAScript and IDL integration · whatwg/html@550c57f]]
([TIME[2015-12-03 15:21:05 +09:00]] 版)
<https://github.com/whatwg/html/commit/550c57f186dd73784a8e4660440db2f642e37c0e>

[47] [CITE@en[Revert "Update ECMAScript and IDL integration" · whatwg/html@3a23548]]
([TIME[2015-12-03 15:27:35 +09:00]] 版)
<https://github.com/whatwg/html/commit/3a235480f1979fcddc65e07fe5a3be7bed428d17>

[48] [CITE@en[Fix #775: update HTMLAllCollection to match reality better · whatwg/html@24b8c4f]]
([TIME[2016-03-10 16:35:50 +09:00]] 版)
<https://github.com/whatwg/html/commit/24b8c4f7fcd89596eaf5335d813a559bddbb65cd>

[89] [CITE@en[document.all willful violation · Issue #668 · tc39/ecma262]]
([TIME[2016-08-16 12:40:47 +09:00]])
<https://github.com/tc39/ecma262/issues/668>

[90] [CITE@en[Implement undefined-like exotic objects by bterlson · Pull Request #673 · tc39/ecma262]]
([TIME[2017-08-16 23:15:12 +09:00]])
<https://github.com/tc39/ecma262/pull/673>

[91] [CITE@en[Remove <applet>]]
([[zcorpan]]著, [TIME[2017-08-21 22:19:30 +09:00]])
<https://github.com/whatwg/html/commit/b9b9d60f9451c05f8e8d542e4094f987ae1a5fb8>

[92] [CITE@en[Remove <applet> (except for parsing rules) · Issue #454 · whatwg/html]]
([TIME[2017-08-25 23:41:45 +09:00]])
<https://github.com/whatwg/html/issues/454>

[93] [CITE@en[Editorial: switch HTMLAllCollection legacycaller to custom '''[''''''['''Call''']'''''']''']]
([[tobie]]著, [TIME[2017-09-09 06:21:15 +09:00]])
<https://github.com/whatwg/html/commit/0679448c59cb4cd69019be1e1f35fee1bcbc9c66>

[107] [CITE@en[Add HTMLAllCollection '''[''''''['''Call''']'''''']''', remove legacycaller special operation by tobie · Pull Request #2932 · whatwg/html]]
([TIME[2017-09-09 17:37:22 +09:00]])
<https://github.com/whatwg/html/pull/2932>

[108] [CITE@en[Remove legacy callers]]
([[TimothyGu]]著, [TIME[2017-08-16 23:39:26 +09:00]])
<https://github.com/heycam/webidl/commit/2b1a990df64deb0b3d3d91ebd83f8efe59e2809b>

[109] [CITE@en['''[''''''['''Construct''']'''''']''' for legacy platform objects? · Issue #407 · heycam/webidl]]
([TIME[2017-09-13 16:01:56 +09:00]])
<https://github.com/heycam/webidl/issues/407>

[110] [CITE@en[Remove legacy callers by TimothyGu · Pull Request #412 · heycam/webidl]]
([TIME[2017-09-13 16:03:43 +09:00]])
<https://github.com/heycam/webidl/pull/412>

[111] [CITE@en[Define document.all as having '''[''''''['''IsHTMLDDA''']'''''']''']]
([[TimothyGu]]著, [TIME[2017-10-02 18:38:28 +09:00]])
<https://github.com/whatwg/html/commit/542be55f0a627460b55a08b7a1914ea05e9b3a3e>

[28] [CITE@en[Add a '''[''''''['''IsHTMLDDA''']'''''']''' internal slot to document.all · Issue #3015 · whatwg/html]]
([TIME[2017-10-03 12:44:16 +09:00]])
<https://github.com/whatwg/html/issues/3015>

[112] [CITE@en[Define document.all as having '''[''''''['''IsHTMLDDA''']'''''']''' by TimothyGu · Pull Request #3087 · whatwg/html]]
([TIME[2017-10-03 12:45:51 +09:00]])
<https://github.com/whatwg/html/pull/3087>

[113] [CITE@en[Regression fix for document.all(undefined)]]
([[foolip]]著, [TIME[2018-01-24 16:43:03 +09:00]])
<https://github.com/whatwg/html/commit/8c42aa6164d34f60228268f0fccfb23fad2ade5d>

[114] [CITE@en[Treat undefined as no arguments for document.all(undefined) by foolip · Pull Request #3392 · whatwg/html]]
([TIME[2018-02-01 22:51:46 +09:00]])
<https://github.com/whatwg/html/pull/3392>

[115] [CITE@en[Disallow -0 in algorithm for checking array index by TimothyGu · Pull Request #517 · heycam/webidl]]
([TIME[2018-02-11 17:32:15 +09:00]])
<https://github.com/heycam/webidl/pull/517>

[116] [CITE@en[Deprecations and removals in Chrome 65  |  Web  |  Google Developers]]
([TIME[2018-03-06 04:54:20 +09:00]])
<https://developers.google.com/web/updates/2018/02/chrome-65-deprecations>

[117] [CITE@en[Editorial: improve HTMLAllCollection IDL]]
([[annevk]]著, [TIME[2018-03-14 13:21:54 +09:00]])
<https://github.com/whatwg/html/commit/be2f5df15c86c1847d85514602904751ec2e2b70>

[118] [CITE@en[Improve HTMLAllCollection IDL by annevk · Pull Request #3562 · whatwg/html]]
([TIME[2018-03-15 17:34:54 +09:00]])
<https://github.com/whatwg/html/pull/3562>

[119] [CITE@en[typeof operator and platform objects · Issue #512 · heycam/webidl]]
([TIME[2019-06-21 17:09:34 +09:00]])
<https://github.com/heycam/webidl/issues/512>

[120] [CITE@en[Implementation-defined typeof still necessary? · Issue #1440 · tc39/ecma262]]
([TIME[2019-06-21 17:10:58 +09:00]])
<https://github.com/tc39/ecma262/issues/1440>