* コールバック

[5] ほとんどの[[インターフェイス]]は、[DFN[[RUBYB[[[非コールバックインターフェイス]]]@en[non-callback interface]]]]です。
[[Webブラウザー]]が[[オブジェクト]]を作成できます ([[プラットフォームオブジェクト]])。

[6] ごく一部の[[インターフェイス]]は、[[コールバックインターフェイス]]です。
[[著者]]が[[オブジェクト]]を作成できます ([[利用者オブジェクト]])。

* インターフェイスの一覧

** 例外と誤り

[2] 
[FIG(short list)[
- [CODE(DOMi)@en[[[DOMError]]]]
- [CODE(DOMi)@en[[[DOMErrorHandler]]]]
- [CODE(DOMi)@en[[[DOMException]]]]
- [CODE(DOMi)@en[[[LSException]]]]
- [CODE(DOMi)@en[[[RangeException]]]]
- [CODE(DOMi)@en[[[SVGException]]]]
- [CODE(DOMi)@en[[[XPathException]]]]
]FIG]

** DOM 木

[1] 
[FIG(short list)[
,[[Attr]]                 ,属性        ,1CF
,[[CDATASection]]         ,文字データ区間,1CX
,[[CharacterData]]        ,文字データ  ,1CF
,[[Comment]]              ,注釈宣言    ,1CF
- [CODE(DOMi)@en[CustomElementRegistry]]
,[[Document]]             ,文書        ,1CF
,[[DocumentType]]         ,文書型定義  ,1CX
- [CODE(DOMi)@en[[[DOMConfiguration]]]]
- [CODE(DOMi)@en[[[DOMImplementaton]]]]
- [CODE(DOMi)@en[[[DOMParser]]]]
- [CODE(DOMi)@en[Element]]
- [CODE(DOMi)@en[ElementContentEditable]]
,[[Entity]]               ,実体        ,1CX
,[[EntityReference]]      ,実体参照    ,1CX
,[[HTMLAnchorElement]]    ,a 要素      ,1H
,[[HTMLAppletElement]]    ,applet 要素 ,1H
,[[HTMLAreaElement]]      ,area 要素   ,1H
,[[HTMLBaseElement]]      ,base 要素   ,1H
,[[HTMLBaseFontElement]]  ,basefont 要素,1H
,[[HTMLBlockquoteElement]],blockquote 要素,1H
,[[HTMLBodyElement]]      ,body 要素   ,1H
,[[HTMLBRElement]]        ,br 要素     ,1H
,[[HTMLButtonElement]]    ,button 要素 ,1H
,[[HTMLCollection]]       ,集まり      ,1H
,[[HTMLDirectoryElement]] ,dir 要素    ,1H
,[[HTMLDListElement]]     ,dl 要素     ,1H
,[[HTMLDocument]]         ,文書        ,1H
,[[HTMLElement]]          ,HTML 要素   ,1H
,[[HTMLDivElement]]       ,div 要素    ,1H
,[[HTMLFieldSetElement]]  ,fieldset 要素,1H
,[[HTMLFontElement]]      ,font 要素   ,1H
,[[HTMLFormElement]]      ,form 要素   ,1H
,[[HTMLFrameElement]]     ,frame 要素  ,1H
,[[HTMLFrameSetElement]]  ,frameset 要素,1H
,[[HTMLHeadElement]]      ,head 要素   ,1H
,[[HTMLHeadingElement]]   ,h[VAR[n]] 要素,1H
,[[HTMLHRElement]]        ,hr 要素     ,1H
,[[HTMLHtmlElement]]      ,html 要素   ,1H
,[[HTMLIFrameElement]]    ,iframe 要素 ,1H
,[[HTMLImageElement]]     ,img 要素    ,1H
,[[HTMLInputElement]]     ,input 要素  ,1H
,[[HTMLIsIndexElement]]   ,isindex 要素,1H
,[[HTMLLabelElement]]     ,label 要素  ,1H
,[[HTMLLegendElement]]    ,legend 要素 ,1H
,[[HTMLLIElement]]        ,li 要素     ,1H
,[[HTMLLinkElement]]      ,link 要素   ,1H
,[[HTMLMapElement]]       ,map 要素    ,1H
,[[HTMLMenuElement]]      ,menu 要素   ,1H
,[[HTMLMetaElement]]      ,meta 要素   ,1H
,[[HTMLModElement]]       ,"ins, del 要素",1H
,[[HTMLObjectElement]]    ,object 要素 ,1H
,[[HTMLOListElement]]     ,ol 要素     ,1H
,[[HTMLOptionElement]]    ,option 要素 ,1H
,[[HTMLParagraphElement]] ,p 要素      ,1H
,[[HTMLParamElement]]     ,param 要素  ,1H
,[[HTMLPreElement]]       ,pre 要素    ,1H
,[[HTMLQuoteElement]]     ,q 要素      ,1H
,[[HTMLScriptElement]]    ,script 要素 ,1H
,[[HTMLSelectElement]]    ,select 要素 ,1H
,[[HTMLStyleElement]]     ,style 要素  ,1H
,[[HTMLTableElement]]     ,table 要素  ,1H
,[[HTMLTableCaptionElement]],caption 要素,1H
,[[HTMLTableColElement]]  ,col 要素    ,1H
,[[HTMLTableCellElement]] ,td 要素     ,1H
,[[HTMLTableRowElement]]  ,tr 要素     ,1H
,[[HTMLTableSectionElement]],"thead, tbody, tfoot 要素",1H
,[[HTMLTextAreaElement]]  ,textarea 要素,1H
,[[HTMLTitleElement]]     ,title 要素  ,1H
,[[HTMLUListElement]]     ,ul 要素     ,1H
- [CODE(DOMi)@en[[[LSParser]]]]
- [CODE(DOMi)@en[[[LSSerializer]]]]
,[[NamedNodeMap]]         ,名前付き節集まり,1CF
,[[Node]]                 ,節          ,1CF
,[[NodeList]]             ,節集まり    ,1CF
,[[Notation]]             ,記法宣言    ,1CX
,[[ProcessingInstruction]],処理指令    ,1CX
,[[Text]]                 ,文          ,1CF
- [CODE(DOMi)@en[[[XMLDocument]]]]
- [CODE(DOMi)@en[[[XMLSerializer]]]]
]FIG]

[18] [[要素]]の種類によって決まる[[インターフェイス]]を[[要素インターフェイス]]といいます。

** 実行環境

[3] [[閲覧文脈]]内
[FIG(short list)[
- [CODE(DOMi)@en[[[Performance]]]]
- [CODE(DOMi)@en[[[PerformanceNavigation]]]]
- [CODE(DOMi)@en[[[PerformanceTiming]]]]
- [CODE(DOMi)@en[[[Plugin]]]]
- [CODE(DOMi)@en[[[PluginArray]]]]
- [CODE(DOMi)@en[[[MimeType]]]]
- [CODE(DOMi)@en[[[MimeTypeArray]]]]
- [CODE(DOMi)@en[[[Navigator]]]]
- [CODE(DOMi)@en[[[NavigatorPlugins]]]]
- [CODE(DOMi)@en[[[Window]]]]
- [CODE(DOMi)@en[[[WindowProxy]]]]
- [CODE(DOMi)@en[IdleDeadline]]
]FIG]

[13] 環境間通信
[FIG(short list)[
- [CODE(DOMi)@en[MessageChannel]]
- [CODE(DOMi)@en[MessagePort]]
- [CODE(DOMi)@en[BroadcastChannel]]
]FIG]

** ネットワーク

[FIG(short list)[
- [CODE(DOMi)@en[[[EventSource]]]]
- [CODE(DOMi)@en[[[XMLHttpRequest]]]]
- [CODE(DOMi)@en[[[WebSocket]]]]
- [CODE(DOMi)@en[[[SOAPCall]]]]
- [CODE(DOMi)@en[[[SOAPParameter]]]]
- [CODE(DOMi)@en[[[WebServiceProxyFactory]]]]
- [CODE(DOMi)@en[[[URL]]]]
- [CODE(DOMi)@en[[[URLUtils]]]]
]FIG]

** 装置

[11] 
[FIG(short list)[
- [CODE(DOMi)@en[DeviceRotationRate]]
- [CODE(DOMi)@en[DeviceAcceleration]]
]FIG]

** 媒体

[12] 
[FIG(short list)[
- [CODE(DOMi)@en[MediaSource]]
- [CODE(DOMi)@en[SourceBuffer]]
]FIG]

* 特殊なインターフェイス

[17] [CODE[DOMException]] は [[JavaScript]] の [CODE[Error]] を[[継承]]するような特殊な[[インターフェイス]]となっています。

[7] [CODE(DOMi)@en[CSSStyleDeclaration]]

[8] [CODE(DOMi)@en[NavigatorID]] の [CODE(DOMm)@en[taintEnabled]]
は、 [[navigator互換性モード]]によって定義されるか、されないかが決まります。

[16] 
[CODE(DOMi)@en[Navigator]] の [CODE[webdriver]] 
は、 [[WebDriver]] により操作されているかどうかで定義されるか、されないかが決まります。


[9] [CODE(DOMi)@en[TouchEvent]] は[[デスクトップブラウザー]]では隠されています。
[CODE(DOMm)@en[createEvent]] の動作もその有無により変化します。

[24] 
[CODE[PushSubscriptionOptions]]

* 関連

[4] [[DOMデータ型の一覧]]

[10] [CITE@en[Merge pull request #128 from domenic/prepare-callbacks]]
([[bzbarsky]]著, [TIME[2016-06-15 18:04:41 +09:00]])
<https://github.com/heycam/webidl/commit/91ad860e5d80ee03ed558ec7724a618fb42dc2f2>

[14] [CITE@en[Simplify the distinguishable table (#183)]]
([[jyasskin]]著, [TIME[2017-01-21 07:47:51 +09:00]])
<https://github.com/heycam/webidl/commit/89fc3a36b076da2563cd4c22ff9a4ef7c0c9a2f6>

[15] [CITE@en[Revamp interface bindings (#313)]]
([[tobie]]著, [TIME[2017-02-21 07:17:07 +09:00]])
<https://github.com/heycam/webidl/commit/4a8f57e276369db7ea5fb09974a09b0ca5d276dd>

[19] [CITE@en[Make '''['''Exposed''']''' mandatory, remove '''['''PrimaryGlobal''']''' (#423)]]
([[tobie]]著, [TIME[2017-12-07 00:10:16 +09:00]])
<https://github.com/heycam/webidl/commit/d59937304702d033358b89fac5b5562c23b56096>

[20] [CITE@en[Add support for interface mixins]]
([[tobie]]著, [TIME[2017-10-11 16:48:12 +09:00]])
<https://github.com/heycam/webidl/commit/45e8173d40ddff8dcf81697326e094bcf8b92920>

[21] [CITE@en[Stop claiming callback interfaces are interfaces]]
([[Ms2ger]]著, [TIME[2019-04-04 22:16:59 +09:00]])
<https://github.com/heycam/webidl/commit/b8ff6b125db0059ad015643074a4b80cae2b6063>

[22] [CITE@en[Stop using extended attributes for constructors]]
([[Ms2ger]]著, [TIME[2019-03-26 23:26:37 +09:00]])
<https://github.com/heycam/webidl/commit/91ca6ebb4d4fca9703309e19256bbc5f5dd77e3c>

[23] [CITE@en[Stop using extended attributes for constructors by Ms2ger · Pull Request #700 · heycam/webidl]]
([TIME[2020-01-12 19:21:03 +09:00]])
<https://github.com/heycam/webidl/pull/700>