[4] インターフェイスや例外が JavaScript に晒されているとは、 WebIDL の規定するところによりインターフェイスや例外が JavaScript の大域環境に晒されることをいいます >>1。
[5] WebIDL により記述されたインターフェイスや例外は、
コールバックインターフェイスや [NoInterfaceObject]
拡張属性がついたものを除き、
対応するインターフェイスオブジェクトや例外インターフェイスオブジェクトが大域オブジェクトの特性として存在することになります。
これを JavaScriptに晒されているといいます。
[6] 例えば Node
インターフェイスは、そのインターフェイスオブジェクトに
window.Node
のようにしてアクセスできます。 (ここで window
は大域オブジェクトを返すものとします。)
[7] しかしすべての大域オブジェクトにすべてのインターフェイスや例外が晒されるわけではありません。 あるインターフェイスや例外が大域オブジェクトに晒されるかどうかは、 それらの存在するJavaScript大域環境により異なります。
Exposed
拡張属性 (Web IDL)[26] Exposed
拡張属性は、
指定された対象が晒されることになるECMAScript大域環境を表します。
[25] Exposed
拡張属性は、インターフェイス、
部分インターフェイス定義、インターフェイスメンバー、
コンストラクター付きの辞書に指定できます >>24。
[32] Constructor
拡張属性を持たない
dictionary
に指定してはなりません >>24。
[39] 部分インターフェイス定義に指定すると、そのインターフェイスメンバーすべてに指定したのと同義となります。 (インターフェイス本体に指定した時と意味が異なります。)
[31] 部分インターフェイス定義とその中のインターフェイスメンバーの両方に指定してはなりません >>24。
[30] overload された演算に現れる場合は、すべての overload において同じ識別子リストで現れなければなりません >>24。
[28] Exposed
拡張属性には識別子1つか識別子リストを指定しなければなりません。
識別子は大域名でなければなりません。 >>24
[45] インターフェイスメンバーに Exposed
拡張属性を指定する場合は、その露出集合がインターフェイスの露出集合の部分集合でなければなりません >>24。
Exposed
を指定できません (>>31) から、
インターフェイスメンバーに Exposed
が指定されている場合もインターフェイス本体の露出集合の部分集合であれば問題ありません。[69] 例えば、
[Global] interface A {}; [Global] interface B {}; [Exposed=A] interface X { [Exposed=B] attribute DOMString m; };... はインターフェイスメンバーの露出集合がインターフェイスの露出集合の部分集合になりませんから、非妥当です。
[70] インターフェイスの露出集合は、その派生的インターフェイス群のすべてのインターフェイスの露出集合の部分集合になっていなければなりません >>24。
[27] Exposed
拡張属性が指定されない場合、
一次大域インターフェイスにのみ晒されることになります >>24。
[29] Exposed
拡張属性が指定された場合、
指定された大域名で表されるインターフェイスを実装する大域オブジェクトの
ECMAScript大域環境にのみ晒されることになります >>24。
[58] Exposed
拡張属性を指定することができる Web IDL
の構造それぞれについて、それが晒される対象を表す露出集合
>>24 が定義されます。
[59] 露出集合は、当該構造を使うことができる大域環境を定義するインターフェイスの集合です >>24。
[65] 露出集合は、次のように定義されています >>24。
[44] インターフェイスの露出集合は、そのすべての派生的インターフェイス群の露出集合の部分集合でなければなりません >>24。
[60] インターフェイスの露出集合は、そのすべての継承しているインターフェイスの露出集合の部分集合でなければなりません >>24。
[33] 辞書のコンストラクターやインターフェイス、 インターフェイスメンバー X がECMAScript大域環境環境に晒されるのは、 次のすべてを満たす場合です >>24。
[43] 例外や例外メンバーは Exposed
拡張属性が認められておらず、
すべてのECMAScript大域環境に晒されるようです。
[21] 当初は HTML Standard の本文によりどのインターフェイスが晒されるか定義されていましたが、
WebIDL の拡張属性 Exposed
に置き換えられました。
[22] Expose events in workers · 0f69e71 · whatwg/dom ( ( 版)) https://github.com/whatwg/dom/commit/0f69e7175dcae9edffa636bb213991330d225bf3
[23] Bug 25495 – Behavior of no [Exposed] on interface members is weird ( 版) https://www.w3.org/Bugs/Public/show_bug.cgi?id=25495
[47] Bug 25495 – Behavior of no [Exposed] on interface members is weird ( ( 版)) https://www.w3.org/Bugs/Public/show_bug.cgi?id=25495
[57] Exposed
(と Global
の値は ,
区切りで複数指定できることになっていましたが、
拡張属性同士の区切りも ,
で構文上曖昧だったので、
複数値があるときは (
...)
で括るように2014年7月に変更されました。
[73] インターフェイスメンバーの Exposed
拡張属性の解釈は若干不自然でしたが、2014年7月に自然な解釈に改められました。
露出集合という用語もこの時導入されました。
[74] Web Applications 1.0 r8752 WebIDL Global=/Exposed= syntax fixes, and make sure the globals are exposed to themselves ( ( 版)) http://html5.org/r/8752
[36] Bug 28538 – [NoInterfaceObject, Exposed=(Window,Worker)] makes no sense ( 版) https://www.w3.org/Bugs/Public/show_bug.cgi?id=28538
[37] Make it clear that an interface cannot be exposed in a global in whic… · heycam/webidl@84d64f6 ( 版) https://github.com/heycam/webidl/commit/84d64f6e7128a846b80254926c5336f04dbafbe5
[62] Merge branch 'secure-context' into gh-pages · heycam/webidl@710b36c ( 版) https://github.com/heycam/webidl/commit/710b36c501ffd130bb4e7b9af43d9be4981a6631
[80] Remove support for [Constructor] on dictionaries (fixes #109). ( (Ms2ger著, )) https://github.com/heycam/webidl/commit/1982dc3f17002c07f93b39e22f69846478e4a9e2
[81] Correct IDL Exposed syntax (annevk著, ) https://github.com/whatwg/encoding/commit/41ac88bd17b4844e9894e9452acbe478f25aa075
[82] Should navigator.productSub/vendor/vendorSub be exposed to workers? · Issue #216 · whatwg/html () https://github.com/whatwg/html/issues/216
[83] [geometry] Limit DOMMatrix's special stringifier to Window (zcorpan著, ) https://github.com/w3c/fxtf-drafts/commit/f5eadb4615fd10ab7c617a9826b0a21d5df6d6c8
[84] Use [Exposed=Window] consistently (annevk著, ) https://github.com/whatwg/html/commit/c441d703746c112b1ad20610b16eca9c312c9d0b
[85] Use Exposed=Window consistently by annevk · Pull Request #2955 · whatwg/html () https://github.com/whatwg/html/pull/2955
[86] Use [Exposed] consistently (birtles著, ) https://github.com/w3c/web-animations/commit/cd6775eae828630d18e2858b0443072267799691
[87] [css-animations-2][css-transitions-2] Add [Exposed=Window] annotation… (birtles著, ) https://github.com/w3c/csswg-drafts/commit/f7768bd63385f95d9f4f64a9c9e42b68492e7bcd
[88] Path2D interface has two'Exposed extended attributes, each with different values. · Issue #2978 · whatwg/html () https://github.com/whatwg/html/issues/2978
[89] Add [Exposed] to DOMTokenList (annevk著, ) https://github.com/whatwg/dom/commit/da7b3ec5d9a4cbd857f0dc6c5ef164331ae156be
[90] Add [Exposed=Window] to MutationObserver (annevk著, ) https://github.com/whatwg/dom/commit/c9544325095195c3afdf6284c29b26e84ce572aa
[91] Add [Exposed=Window] to MutationObserver by annevk · Pull Request #507 · whatwg/dom () https://github.com/whatwg/dom/pull/507
[92] Use [Exposed=Window] (anssiko著, ) https://github.com/w3c/sensors/commit/34c9bb71d7852c7ee8087593935d7cf9cd90c12c
[93] Use [Exposed=Window] by anssiko · Pull Request #264 · w3c/sensors () https://github.com/w3c/sensors/pull/264
[94] Use [Exposed=Window] · Issue #437 · w3c/presentation-api () https://github.com/w3c/presentation-api/issues/437
[95] Use [Exposed=Window] (anssiko著, ) https://github.com/w3c/manifest/commit/54de4d7bbffaea4d0dd8e552d8288101811e9ff4
[96] Use [Exposed=Window] by anssiko · Pull Request #608 · w3c/manifest () https://github.com/w3c/manifest/pull/608
[97] Use [Exposed=Window] in example too (anssiko著, ) https://github.com/w3c/sensors/commit/748bcc24db3276512cf9092230bf484a1711f262
[98] Use [Exposed=Window] even more (annevk著, ) https://github.com/whatwg/html/commit/f2a32c045aa7764533cda58b4452fe2bbc6652a0
[99] Use [Exposed=Window] even more by annevk · Pull Request #3009 · whatwg/html () https://github.com/whatwg/html/pull/3009
[100] Annotate interfaces with [Exposed] extended attribute (#110) (dontcallmedom著, ) https://github.com/w3c/wake-lock/commit/830d148121b7d38cd5f934277017ea62da998636
[101] Annotate interfaces with [Exposed] extended attribute by dontcallmedom · Pull Request #110 · w3c/wake-lock () https://github.com/w3c/wake-lock/pull/110
[102] [css-animations][css-conditional][css-font-loading][cssom-view][cssom… (zcorpan著, ) https://github.com/w3c/csswg-drafts/commit/c2541c830fb6c80687b026efacdf3bfa936f102c
[103] [css-animations][css-conditional][css-font-loading][cssom-view][cssom][mediaqueries] IDL: Use [Exposed] consistently by zcorpan · Pull Request #1749 · w3c/csswg-drafts () https://github.com/w3c/csswg-drafts/pull/1749
[104] Fix #54: Add [Exposed] to interfaces (garykac著, ) https://github.com/w3c/clipboard-apis/commit/4aef1c5273afcb8e022c10f2e4469e971c9ec082
[105] Add [Exposed] to all interfaces · Issue #54 · w3c/clipboard-apis () https://github.com/w3c/clipboard-apis/issues/54
[106] Fix #159: Add [Exposed] to interfaces (garykac著, ) https://github.com/w3c/uievents/commit/1078d03d4a3539d16f22cc39dc31afb901f5a44f
[107] Add [Exposed] to all interfaces · Issue #159 · w3c/uievents () https://github.com/w3c/uievents/issues/159
[108] Use [Exposed=Window] (anssiko著, ) https://github.com/w3c/presentation-api/commit/72cfca6063c077aff566725f332aae42c80ce7d2
[109] Use [Exposed=Window] · Issue #437 · w3c/presentation-api () https://github.com/w3c/presentation-api/issues/437
[110] Merge pull request #483 from dontcallmedom/exposed (aboba著, ) https://github.com/w3c/mediacapture-main/commit/eb543d7b95c878f5cb6b407c1c419478dc4db037
[111] Add missing [Exposed] extended attribute on InputDeviceInfo by dontcallmedom · Pull Request #483 · w3c/mediacapture-main () https://github.com/w3c/mediacapture-main/pull/483
[112] Please add [Exposed] to all interfaces · Issue #481 · w3c/mediacapture-main () https://github.com/w3c/mediacapture-main/issues/481
[113] Add [Exposed=Window] to Constructor (#218) (patrickhlauke著, ) https://github.com/w3c/pointerevents/commit/c87d19e2515b2d6654d321ee3726487abdc1774e
[114] Add [Exposed=Window] to Constructor by patrickhlauke · Pull Request #218 · w3c/pointerevents () https://github.com/w3c/pointerevents/pull/218
[115] Add [Exposed] to all interfaces · Issue #217 · w3c/pointerevents () https://github.com/w3c/pointerevents/issues/217
[116] Add [Exposed=Window] to Constructor (#88) (patrickhlauke著, ) https://github.com/w3c/touch-events/commit/b12e03f49b98725105b0b0f2aeb912bea2562933
[117] Add [Exposed=Window] to Constructor by patrickhlauke · Pull Request #88 · w3c/touch-events () https://github.com/w3c/touch-events/pull/88
[118] Add [Exposed] to all interfaces · Issue #87 · w3c/touch-events () https://github.com/w3c/touch-events/issues/87
[119] Remove unecessary exposed (rmcilroy著, ) https://github.com/w3c/requestidlecallback/commit/5ac76791a6cf85395711807101e5fd4b61050b34
[120] Add Exposed to interfaces. by rmcilroy · Pull Request #65 · w3c/requestidlecallback () https://github.com/w3c/requestidlecallback/pull/65
[121] Add [Exposed] to all interfaces · Issue #64 · w3c/requestidlecallback () https://github.com/w3c/requestidlecallback/issues/64
[122] Add [Exposed=Window] and use toJSON (plehegar著, ) https://github.com/w3c/navigation-timing/commit/906cbdad95aa79e0e41279dddd0c766b26134c08
[123] 25495 – Behavior of no [Exposed] on interface members is weird () https://www.w3.org/Bugs/Public/show_bug.cgi?id=25495
[124] Add [Exposed=Window] extended attribute to ScreenOrientation interface ( (alexshalamov著, ) https://github.com/w3c/screen-orientation/commit/d41c0a71ce9d299df0eaf515c43ed1b3d52a4fad
[125] Add [Exposed] to all interfaces · Issue #106 · w3c/screen-orientation () https://github.com/w3c/screen-orientation/issues/106
[126] Add [Exposed=Window] extended attribute to ScreenOrientation interface by alexshalamov · Pull Request #107 · w3c/screen-orientation () https://github.com/w3c/screen-orientation/pull/107
[127] 26425 – Drop the default for [Exposed] () https://www.w3.org/Bugs/Public/show_bug.cgi?id=26425
[128] 22646 – So if we want to say on a per-object basis whether it ought to be exposed to workers (which I think is useful) lets introduce "exposed to document environments", "exposed to worker environments", and [...] () https://www.w3.org/Bugs/Public/show_bug.cgi?id=22646
[129] Remove [PrimaryGlobal] (annevk著, ) https://github.com/whatwg/html/commit/dff66be7bd3c2a6ce1a411f2e8c2a1ccac88fd92
[130] Remove [PrimaryGlobal] by annevk · Pull Request #2956 · whatwg/html () https://github.com/whatwg/html/pull/2956
[131] Make [Exposed] mandatory, remove [PrimaryGlobal] (#423) (tobie著, ) https://github.com/heycam/webidl/commit/d59937304702d033358b89fac5b5562c23b56096
[132] Investigate removing [PrimaryGlobal] and requiring [Exposed] · Issue #365 · heycam/webidl () https://github.com/heycam/webidl/issues/365
[133] 30178 – Use [Exposed] () https://www.w3.org/Bugs/Public/show_bug.cgi?id=30178
[134] 26425 – Drop the default for [Exposed] () https://www.w3.org/Bugs/Public/show_bug.cgi?id=26425
[135] Make [Exposed] mandatory, remove [PrimaryGlobal] by tobie · Pull Request #423 · heycam/webidl () https://github.com/heycam/webidl/pull/423
[136] Fix and clarify exposed dfn (#464) (tobie著, ) https://github.com/heycam/webidl/commit/860ecf4949dfdd328d502babeae7b180eda02647
[137] Fix and clarify exposed dfn by tobie · Pull Request #464 · heycam/webidl () https://github.com/heycam/webidl/pull/464
[138] Add support for interface mixins (tobie著, ) https://github.com/heycam/webidl/commit/45e8173d40ddff8dcf81697326e094bcf8b92920
[139] 25495 – Behavior of no [Exposed] on interface members is weird () https://www.w3.org/Bugs/Public/show_bug.cgi?id=25495
[140] Mark up everything with [Exposed] annotations as appropriate. Anythin… (tabatkins著, ) https://github.com/w3c/css-houdini-drafts/commit/1072db98bb375627fb01b1adb3a1418299007f17
[141] [typed-om] Remove [Exposed] from the partial interfaces; it's both un… (tabatkins著, ) https://github.com/w3c/css-houdini-drafts/commit/a5dc251a599efe301cd9f1512dfe4dc7aa83c4af
[142] [css-typed-om-1] Exposed value for partial interface Element makes no sense and is not valid Web IDL · Issue #658 · w3c/css-houdini-drafts () https://github.com/w3c/css-houdini-drafts/issues/658
[143] CSSFontFaceRule etc. exposed to Window (ericwilligers著, ) https://github.com/w3c/csswg-drafts/commit/144108785bd098d5b18d3866222254ae7b83696e
[144] [css-fonts-4] Missing Exposed extended attribute · Issue #2342 · w3c/csswg-drafts () https://github.com/w3c/csswg-drafts/issues/2342
[145] CSSFontFaceRule etc. exposed to Window by ewilligers · Pull Request #2344 · w3c/csswg-drafts () https://github.com/w3c/csswg-drafts/pull/2344
[146] Mark up everything with [Exposed] annotations as appropriate. Anythin… (tabatkins著, ) https://github.com/w3c/css-houdini-drafts/commit/1072db98bb375627fb01b1adb3a1418299007f17
[147] [css-paint-api]: APIs not exposed in Worklets · Issue #237 · w3c/css-houdini-drafts () https://github.com/w3c/css-houdini-drafts/issues/237
[148] [css-typed-om] Add Exposed=PaintWorklet to API by darrnshn · Pull Request #430 · w3c/css-houdini-drafts () https://github.com/w3c/css-houdini-drafts/pull/430
[149] Fixes #345 Add [Exposed] to SVG interfaces (dstorey著, ) https://github.com/w3c/svgwg/commit/1ca313dc4ff7f05b02d8b4a81259317db2b666b8
[150] Add [Exposed] to all interfaces · Issue #345 · w3c/svgwg () https://github.com/w3c/svgwg/issues/345
[151] Fixes #345 Add [Exposed] to SVG interfaces by dstorey · Pull Request #387 · w3c/svgwg () https://github.com/w3c/svgwg/pull/387
[152] Add [Exposed=Window] to interfaces (ericwilligers著, ) https://github.com/w3c/csswg-drafts/commit/ddfa79ddec619d09eefb02c75cade422bc4d223d
[153] [css-fonts-4] Missing Exposed extended attribute · Issue #2342 · w3c/csswg-drafts () https://github.com/w3c/csswg-drafts/issues/2342
[154] Add [Exposed=Window] to interfaces by ewilligers · Pull Request #2345 · w3c/csswg-drafts () https://github.com/w3c/csswg-drafts/pull/2345
[155] Added [Exposed] to the SecurityPolicyViolationEvent interface (#338) (andypaicu著, ) https://github.com/w3c/webappsec-csp/commit/5668a60a0b983bc32c42d4891af42d5c1a00ffbe
[156] Added [Exposed] to the SecurityPolicyViolationEvent interface by andypaicu · Pull Request #338 · w3c/webappsec-csp () https://github.com/w3c/webappsec-csp/pull/338
[157] Editorial: clarify the wording of an Exposed requirement (Ms2ger著, ) https://github.com/heycam/webidl/commit/fb6e4cd4d45eeb616872a476bfed44d7adcb3774
[158] Poorly worded normative requirement could be improved · Issue #548 · heycam/webidl () https://github.com/heycam/webidl/issues/548
[159] Editorial: Clarify the wording of an Exposed requirement. by Ms2ger · Pull Request #615 · heycam/webidl () https://github.com/heycam/webidl/pull/615
[160] Editorial: cross-reference the "exposed" IDL concept (Ms2ger著, ) https://github.com/whatwg/html/commit/dfe50f72c4ee08b57081d8f2ea66bac5ecb31183
[161] Editorial: Xref the 'exposed' IDL concept by Ms2ger · Pull Request #4819 · whatwg/html () https://github.com/whatwg/html/pull/4819
[162] Is an interface named I exposed in realm R · Issue #518 · heycam/webidl () https://github.com/heycam/webidl/issues/518
[163] Add explicit [Exposed] + dictionary default value (#407) (saschanaz著, ) https://github.com/w3c/webappsec-csp/commit/90a9bc886234d056286f84dd6c9fb0c482fd460f
[164] Add explicit [Exposed] + dictionary default value by saschanaz · Pull Request #407 · w3c/webappsec-csp () https://github.com/w3c/webappsec-csp/pull/407
[165] Add async_iterable support (Ms2ger著, ) https://github.com/heycam/webidl/commit/d6caf50f9e21b467dfe54ee37b443f96c09f7333
[166] Stop using extended attributes for constructors (Ms2ger著, ) https://github.com/heycam/webidl/commit/91ca6ebb4d4fca9703309e19256bbc5f5dd77e3c