legacy callers

legacycaller (WebIDL)

[5] WebIDL における legacycaller は、オブジェクトを Function として実行したときに呼び出されるメソッドです。

[6] コレクションメソッドとして呼び出すのはおそらく Microsoft によって IE4 DOM の一部として導入された機能で、 Visual Basic などにも同様の構文が存在しています。 Web ではあまり使われておらず、 互換性のために必要な場合に限って利用し、新機能には使わないことになっています。 (そのため 「legacy」と呼ばれています。)

仕様書

legacycaller の一覧

[8] 現存する legacycaller は次のインターフェイスのものです。

[30] 唯一 document.all のみとなったため、 Web IDL の機能としては廃止され、 HTML Standarddocument.all 専用の機能として定義される形になりました。

歴史

[1] Web Applications 1.0 r6781 compat with majority of browsers ( ( 版)) <http://html5.org/tools/web-apps-tracker?from=6780&to=6781>

[2] Web Applications 1.0 r7268 Remove some 'legacycaller's ( ( 版)) <http://html5.org/tools/web-apps-tracker?from=7267&to=7268>

[3] Web Applications 1.0 r8469 Remove some parts of document.all that data shows have virtually no usage. ( ( 版)) <http://html5.org/tools/web-apps-tracker?from=8468&to=8469>

[4] Web Applications 1.0 r8502 Restore document.all() legacycaller, for compat ( ( 版)) <http://html5.org/tools/web-apps-tracker?from=8501&to=8502>

[7] DOM Perl Binding では use overload&{} 演算子に対応することにされていましたが、後に削除されました。 (Perl では互換性のために必要がないため。)

[10] 909656 – Can we remove the legacycaller on <object>/<embed>? ( 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=909656>

[11] Intent to Remove: HTMLAppletElementLegacyCall - Google グループ ( 版) <https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/MuxvaXiyBxU>

[12] Web Applications 1.0 r6915 Define the legacycaller behaviour of <embed> and <object>. ( 版) <https://html5.org/r/6915>

[22] Remove legacycaller from two collections · whatwg/html@834a858 ( 版) <https://github.com/whatwg/html/commit/834a8589d2df1977ee8cb1e8b277fa87d5a69a0b>

プラグインの legacycaller

[14] HTMLEmbedElement インターフェイスは、 legacycaller 操作を実装しなければなりません >>13

[15] その既定の動作は、 NotSupportedError 例外投げるものとすることが提案 (suggest) されています >>13

[17] object 要素legacycaller 操作は、 次のようにしなければなりません >>16

  1. [18] 実現値化されたプラグインを持つ場合で、 そのスクリプト可能インターフェイスに legacycaller 操作が定義されているなら、
    1. [19] それを呼び出します。
  2. [20] それ以外の場合、
    1. [21] NotSupportedError 例外投げます

[23] Remove legacycaller from <object> and <embed> (zcorpan著, ) <https://github.com/whatwg/html/commit/aaf2435a8cbaf7fa4e791bf86874854bb1b618af>

[24] Add legacy platform objects. (#230) (tobie著, ) <https://github.com/heycam/webidl/commit/379685767dce3f953e187a2a8f3cb492b9b56649>

[25] API Deprecations and Removals in Chrome 57  |  Web  |  Google Developers () <https://developers.google.com/web/updates/2017/02/chrome-57-deprecations?utm_source=feed&utm_medium=>

[26] Deprecations and Removals in Chrome 58  |  Web  |  Google Developers ( ()) <https://developers.google.com/web/updates/2017/03/chrome-58-deprecations>

[27] Editorial: switch HTMLAllCollection legacycaller to custom [[Call]] (tobie著, ) <https://github.com/whatwg/html/commit/0679448c59cb4cd69019be1e1f35fee1bcbc9c66>

[28] Add HTMLAllCollection [[Call]], remove legacycaller special operation by tobie · Pull Request #2932 · whatwg/html () <https://github.com/whatwg/html/pull/2932>

[29] Remove legacy callers (TimothyGu著, ) <https://github.com/heycam/webidl/commit/2b1a990df64deb0b3d3d91ebd83f8efe59e2809b>

[31] [[Construct]] for legacy platform objects? · Issue #407 · heycam/webidl () <https://github.com/heycam/webidl/issues/407>

[32] [[Call]] for objects w/o legacycaller · Issue #408 · heycam/webidl () <https://github.com/heycam/webidl/issues/408>

[33] Remove legacy callers by TimothyGu · Pull Request #412 · heycam/webidl () <https://github.com/heycam/webidl/pull/412>