[4] [[インターフェイス]]や[[例外]]が [RUBYB[[[JavaScript]] に晒されている]@en[exposed to JavaScript]]とは、 [[WebIDL]] の規定するところにより[[インターフェイス]]や[[例外]]が [[JavaScript]] の[[大域オブジェクト]]に晒されることをいいます [SRC[>>1]]。 * 仕様書 [REFS[ - [1] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-10-18 20:52:42 +09:00]] 版) ''' - [9] [CITE[Web IDL (Second Edition)]] ([TIME[2013-08-25 07:30:46 +09:00]] 版) - [2] [CITE[Web IDL (Second Edition)]] ([TIME[2013-09-27 04:34:45 +09:00]] 版) - [3] [CITE[Web IDL (Second Edition)]] ([TIME[2013-09-27 04:34:45 +09:00]] 版) ]REFS] * 説明 [5] [[WebIDL]] により記述された[[インターフェイス]]や[[例外]]は、 [[コールバックインターフェイス]]や [CODE@en[[['''['''NoInterfaceObject''']''']]]] [[拡張属性]]がついたものを除き、 対応する[[インターフェイスオブジェクト]]や[[例外インターフェイスオブジェクト]]が[[大域オブジェクト]]の[[特性]]として存在することになります。 これを [[JavaScriptに晒されている]]といいます。 [EG[ [6] 例えば [CODE(DOMi)@en[[[Node]]]] [[インターフェイス]]は、その[[インターフェイスオブジェクト]]に [CODE(JS)@en[[[window]].[[Node]]]] のようにしてアクセスできます。 (ここで [CODE(JS)@en[[[window]]]] は[[大域オブジェクト]]を返すものとします。) ]EG] [7] しかしすべての[[大域オブジェクト]]にすべての[[インターフェイス]]や[[例外]]が晒されるわけではありません。 ある[[インターフェイス]]や[[例外]]が[[大域オブジェクト]]に晒されるかどうかは、 それらの存在する[[JavaScript大域環境]]により異なります。 [EG[ [8] 例えば [CODE(DOMi)@en[[[Node]]]] [[インターフェイス]]は[[文書環境]]では[[JavaScriptに晒され]]ていますが、 [[ワーカー環境]]ではそうではありません。従って、 [CODE(JS)@en[[[self]]]] が[[大域オブジェクト]]を返すとして、 [CODE(JS)@en[[[self]].[[Node]]]] は[[文書環境]]では[[インターフェイスオブジェクト]]を返しますが、 [[ワーカー環境]]では [CODE(JS)@en[[[undefined]]]] を返します。 ]EG] * [CODE@en[Exposed]] 拡張属性 (WebIDL) @@ * 歴史 [10] [CITE@en[Web Applications 1.0 r8425 Update the spec to say what's exposed to workers: take 1]] ( ([TIME[2014-01-28 08:08:00 +09:00]] 版)) [11] [CITE[IRC logs: freenode / #whatwg / 20140127]] ( ([TIME[2014-01-28 20:45:52 +09:00]] 版)) [12] [CITE@en[Web Applications 1.0 r8430 Try doing this a different way (MessageEvent.source exposure)]] ( ([TIME[2014-01-29 05:34:00 +09:00]] 版)) [13] [CITE@en[Web Applications 1.0 r8444 Ok, go back to exposing MessageEvent.source in one form everywhere, relying on WebIDL for the rest of the logic here]] ( ([TIME[2014-01-30 11:41:00 +09:00]] 版)) [14] [CITE@en[Web Applications 1.0 r8449 Forgot to expose some canvas interfaces to workers.]] ( ([TIME[2014-02-01 03:24:00 +09:00]] 版)) [15] [CITE[Expose events in workers · 0f69e71 · whatwg/dom]] ( ([TIME[2014-02-01 02:21:53 +09:00]] 版))