/[suikacvs]/markup/html/html5/spec-ja/workers-non-normative.ja.html.u8
Suika

Contents of /markup/html/html5/spec-ja/workers-non-normative.ja.html.u8

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.214 - (hide annotations) (download)
Mon Jan 11 06:21:48 2010 UTC (16 years, 6 months ago) by wakaba
Branch: MAIN
Changes since 1.213: +2 -2 lines
make

1 wakaba 1.159 <!DOCTYPE html><html lang=en-US-x-hixie><meta charset=ascii><title>Web Workers</title><link href=http://www.whatwg.org/style/specification rel=stylesheet>
2 wakaba 1.111 <link href=ja-style rel=stylesheet>
3     <link href=only-ja-style rel="stylesheet" title="Show only Japanese text" id=style-only-ja>
4     <link href=both-en-ja-style rel="alternate stylesheet" title="Show both English and Japanese texts" id=style-both-en-ja>
5 wakaba 1.206 <script src=ja-script defer async></script><link href=http://www.whatwg.org/images/icon rel=icon><body class=cfc>
6 wakaba 1.200
7     <header class=head><p class="has-ja-translation" data-ja-hash="7c0cfd95ed2e5f66067c25a5e7fec67c"><span class=en-original lang=en><a class=logo href=http://www.whatwg.org/ rel=home><img alt=WHATWG src=/images/logo></a></span><span class=ja-translation lang=ja><a class=logo href=http://www.whatwg.org/ rel=home><img lang=en alt=WHATWG
8 wakaba 1.111 src=http://www.whatwg.org/images/logo></a></span></p>
9 wakaba 1.200 <hgroup><h1 class="no-ja-translation" data-ja-hash="6cb7eb9696d986359fa3a78c4b8e60dc"><span class=en-original lang=en>Web Workers</span></h1>
10 wakaba 1.214 <h2 class="no-num no-toc has-ja-translation" data-ja-hash="9ea0914ebe364045b80e1ff1a8a2ec1e" data-ja-real-hash="3bd75c5478c6446fb55c90f697fd6119"><span class=en-original lang=en>Draft Recommendation &mdash; 10 January 2010</span><span class=ja-translation lang=ja>勧告案<ins class=ja-note>の非公式和訳</ins> &mdash;
11     <ins class=ja-note>(原文出版日)</ins> 2010年1月10日</span></h2>
12 wakaba 1.200 </hgroup><p class="has-ja-translation" data-ja-hash="5211c3fce4ddd8160d21446a73a092c1"><span class=en-original lang=en>You can take part in this work. <a href=http://www.whatwg.org/mailing-list>Join the working group's discussion list.</a></span><span class=ja-translation lang=ja>みなさんにも作業にご参加いただけます。 <a
13 wakaba 1.111 href=http://www.whatwg.org/mailing-list>作業部会の議論用メイリング・リストに参加してください。</a></span></p>
14     <p class="has-ja-translation" data-ja-hash="f8e7b0fcec0268c81579638290279e82"><span class=en-original lang=en><strong>Web designers!</strong> We have a <a href=http://blog.whatwg.org/faq/>FAQ</a>, a <a href=http://forums.whatwg.org/>forum</a>, and a <a href=http://www.whatwg.org/mailing-list#help>help mailing list</a> for you!</span><span class=ja-translation lang=ja><strong>Web デザイナーのみなさん!</strong> みなさんのための <a
15     href=http://blog.whatwg.org/faq/ lang=en>FAQ</a>、<a
16     href=http://forums.whatwg.org/>掲示板</a>、<a
17     href=http://www.whatwg.org/mailing-list#help>ヘルプ用メイリング・リスト</a>があります!
18    
19     </span><p>
20    
21     <!-- Japanese-translation-only notes -->
22     <ins class="ja-note cover-ja-note" lang=ja>
23     <p>この文書は、 WHATWG 仕様書の日本語訳です。 正式な仕様書は英語版だけであり、この日本語訳はあくまで参考としてご利用ください。
24    
25     <p lang=en>This document is a non-normative Japanese translation of the WHATWG specification. Only the original English version is normative and this Japanese translation is non‐normative.
26    
27     <p>日本語訳は段落をダブルクリックすると編集できます。<a href="http://suika.fam.cx/~wakaba/pbin/accounts/add">アカウントを作成</a>して <code>spec-ja</code> グループに参加してください。編集結果はおよそ3時間おきに反映されます。また、原文の変更には毎日自動的に追随しています。 (<a href=notes>詳細</a>)
28    
29     <p lang=en>You can edit Japanese text by double-clicking the paragraph you'd like to edit. <a href="http://suika.fam.cx/~wakaba/pbin/accounts/add">Create an account</a> and join the <code>spec-ja</code> group. Any additions of and modifications to Japanese text will be applied to the document within about three hours. Any changes to the original English specification will automatically be incorporated to the document every day. (<a href=notes>Details</a>)
30    
31     <p><a href="http://wiki.whatwg.org/wiki/Translations">他の翻訳のリスト</a>もご覧ください。
32    
33     <p lang=en>See also the list of <a href="http://wiki.whatwg.org/wiki/Translations">translations</a>.
34    
35     <p><button type=button onclick="
36     document.getElementById ('style-only-ja').disabled = false;
37     document.getElementById ('style-both-en-ja').disabled = true;
38     ">日本語訳だけ表示 <span lang=en>Show only Japanese translation</span></button>
39     <p><button type=button onclick="
40     document.getElementById ('style-only-ja').disabled = true;
41     document.getElementById ('style-both-en-ja').disabled = false;
42     ">英和対訳表示 <span lang=en>Show both English and Japanese texts</span></button>
43     </ins>
44    
45     <p><span><!-- dummy --></span></p>
46 wakaba 1.159 <dl><dt class="has-ja-translation" data-ja-hash="87b044fafc6f01197a9a700e6fa28a69"><span class=en-original lang=en>This version:</span><span class=ja-translation lang=ja><ins class=ja-note>原文の</ins>この版</span></dt>
47 wakaba 1.111 <dd class="no-ja-translation" data-ja-hash="b1b00adfdf359bf303bf8c64476f2e91"><span class=en-original lang=en><a href=http://www.whatwg.org/specs/web-workers/current-work/>http://whatwg.org/ww</a></span></dd>
48     <dt class="has-ja-translation" data-ja-hash="8866e8de2efa7275a5dc8e942c1613c2"><span class=en-original lang=en>Version history:</span><span class=ja-translation lang=ja><ins class=ja-note>原文の</ins>改版履歴:</span></dt>
49     <dd class="has-ja-translation" data-ja-hash="fc2cb84da44565f149b710ac5dfb38f2"><span class=en-original lang=en>Twitter messages (non-editorial changes only): <a href=http://twitter.com/WHATWG>http://twitter.com/WHATWG</a></span><span class=ja-translation lang=ja><span lang=en>Twitter</span> メッセージ (編集上の変更以外): <a
50     href=http://twitter.com/WHATWG>http://twitter.com/WHATWG</a></span></dd>
51     <dd class="has-ja-translation" data-ja-hash="3a0facbd53f73c0877af4c6485a783af"><span class=en-original lang=en>Commit-Watchers mailing list: <a href=http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org>http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org</a></span><span class=ja-translation lang=ja>Commit-Watchers メイリング・リスト: <a
52     href=http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org>http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org</a></span></dd>
53     <dd class="has-ja-translation" data-ja-hash="5e1dbca74cface6f0d0ea523340e6a89" data-ja-real-hash="a5d87a842e49eed08d894d0148296604"><span class=en-original lang=en>Interactive Web interface: <a href=http://html5.org/tools/web-workers-tracker>http://html5.org/tools/web-workers-tracker</a></span><span class=ja-translation lang=ja>対話的 <span lang=en>Web</span> 界面: <a href=http://html5.org/tools/web-workers-tracker>http://html5.org/tools/web-workers-tracker</a></span></dd>
54     <dd class="has-ja-translation" data-ja-hash="ea5cbdd06bfb529e4a1bcfeac9cfbd61" data-ja-real-hash="fabeffa34fbe319f499e2c5fd49a414f"><span class=en-original lang=en>Subversion interface: <a href=http://svn.whatwg.org/webworkers/>http://svn.whatwg.org/webworkers/</a></span><span class=ja-translation lang=ja><span lang=en>Subversion</span> 界面: <a href=http://svn.whatwg.org/webworkers/>http://svn.whatwg.org/webworkers/</a></span></dd>
55     <dt class="has-ja-translation" data-ja-hash="8468b55db22971120cb71091ece7839e"><span class=en-original lang=en>Issues:</span><span class=ja-translation lang=ja>問題:</span></dt>
56     <dd class="has-ja-translation" data-ja-hash="80e92f8cfebdeaa7dd35236fded506f7"><span class=en-original lang=en>To send feedback: <a href=http://www.whatwg.org/mailing-list>[email protected]</a></span><span class=ja-translation lang=ja>フィードバックの送信先: <a
57     href=http://www.whatwg.org/mailing-list>[email protected]</a></span></dd>
58     <dd class="has-ja-translation" data-ja-hash="31c70a584b8b4195d95daffc76736dea"><span class=en-original lang=en>To view and vote on feedback: <a href=http://www.whatwg.org/issues/>http://www.whatwg.org/issues/</a></span><span class=ja-translation lang=ja>フィードバックの閲覧・投票: <a
59     href=http://www.whatwg.org/issues/>http://www.whatwg.org/issues/</a></span></dd>
60     <dt class="has-ja-translation" data-ja-hash="aa8d072dc59504320cfa92381f541a5f"><span class=en-original lang=en>Editor:</span><span class=ja-translation lang=ja>編集者:</span></dt>
61     <dd class="no-ja-translation" data-ja-hash="220fb2ab7924ad62bc8567b8b9c5f0f8"><span class=en-original lang=en>Ian Hickson, Google, [email protected]</span></dd>
62 wakaba 1.159 </dl><p class="copyright no-ja-translation" data-ja-hash="01887da059d5ef35df4e1cc221f80391"><span class=en-original lang=en>&copy; Copyright 2004-2008 Apple Computer, Inc.,
63 wakaba 1.111 Mozilla Foundation, and Opera Software ASA.</span></p>
64     <p class="copyright no-ja-translation" data-ja-hash="5419c8afab07265f61a6768f2680776d"><span class=en-original lang=en>You are granted a license to use, reproduce
65     and create derivative works of this document.</span></p>
66 wakaba 1.200 </header><hr><h2 class="no-num no-toc has-ja-translation" data-ja-hash="e353dbe42c8654f33588d4da0b517469" id=abstract><span class=en-original lang=en>Abstract</span><span class=ja-translation lang=ja>概要</span></h2>
67 wakaba 1.111
68     <p class="has-ja-translation" data-ja-hash="a4f61aa99f0d87d5d87b6e07071a74da"><span class=en-original lang=en>This specification defines an API that allows Web application
69     authors to spawn background workers running scripts in parallel to
70     their main page. This allows for thread-like operation with
71     message-passing as the coordination mechanism.</span><span class=ja-translation lang=ja>この仕様書は、 Web アプリケーションで、主たる頁とは並列に、
72     背景労働者スクリプトを走らせるための API を定義します。
73     これにより、メッセージ・パッシングによるスレッド的操作を協調機構として利用できるようになります。</span></p>
74    
75    
76     <h2 class="no-num no-toc has-ja-translation" data-ja-hash="c9bfd146532700356f3ff5ea6b1bf72e" id=status><span class=en-original lang=en>Status of this document</span><span class=ja-translation lang=ja>この文書の状態</span></h2>
77    
78     <p class="has-ja-translation" data-ja-hash="910f4ff57cc374ba46a8fecb18849de5"><span class=en-original lang=en><strong>This is a work in progress!</strong> This document is
79     changing on a daily if not hourly basis in response to comments and
80     as a general part of its development process. Comments are very
81     welcome, please send them to <a href=mailto:[email protected]>[email protected]</a>. Thank
82     you.</span><span class=ja-translation lang=ja><strong>この文書は作業中です!</strong>
83     この文書は、コメントへの対応や通常の開発の過程として、
84     毎時毎分とは言い過ぎですが毎日のペースで変更されています。
85     コメントは非常に歓迎していますので、
86     <a href=mailto:[email protected]>[email protected]</a>
87     へお送りください。よろしくお願いします。</span></p>
88    
89     <p class="has-ja-translation" data-ja-hash="5bb9ea777b965ca8d962ba2b6f663d46"><span class=en-original lang=en>The current focus is in developing a first draft proposal.</span><span class=ja-translation lang=ja>現在の焦点は、第1案の開発です。</span></p>
90    
91     <p class="has-ja-translation" data-ja-hash="f0a0e89202a0b75b7cf2314905ae258d"><span class=en-original lang=en>Implementors should be aware that this specification is not
92     stable. <strong>Implementors who are not taking part in the
93     discussions are likely to find the specification changing out from
94     under them in incompatible ways.</strong> Vendors interested in
95     implementing this specification before it eventually reaches the
96     call for implementations should join the <a href=/mailing-list>WHATWG mailing list</a> and take part in the
97     discussions.</span><span class=ja-translation lang=ja>実装者は、この仕様書が安定していないことに注意するべきです。
98     <strong>実装者は議論に参加しておかないと、
99     仕様がその実装とは非互換に変更されてしまうかもしれません。</strong>
100     この仕様書がいずれ実装呼び掛けの段階に達するのよりも前にこの仕様を実装したい販売者は、
101     <a href=http://www.whatwg.org/mailing-list>WHATWG メイリング・リスト</a>に参加し、
102     議論に加わるべきです。</span></p>
103    
104     <p class="no-ja-translation" data-ja-hash="739dc8d532ab9ebbd8a5ba09015898cc"><span class=en-original lang=en>This specification is also being produced by the <a href=http://www.w3.org/2008/webapps/>W3C Web Apps WG</a>. The two
105     specifications are identical from the table of contents onwards.</span></p>
106    
107 wakaba 1.213
108    
109 wakaba 1.111 <h2 class="no-num no-toc has-ja-translation" data-ja-hash="598b8ae10dfce818e73d3218daddbdae" id=contents><span class=en-original lang=en>Table of contents</span><span class=ja-translation lang=ja>目次
110     </span></h2>
111    
112     <!--begin-toc-->
113     <ol class=toc>
114     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="e8340d3e813afc18cffdf99dd3a546e3"><span class=en-original lang=en><a href=#introduction><span class=secno>1 </span>Introduction</a>
115     </span><ol>
116     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="1f928c91e5f5cc18f353953a9057c45e"><span class=en-original lang=en><a href=#scope><span class=secno>1.1 </span>Scope</a></span></li>
117     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="d9aa6a9a8b1af17de823ae3bc43e4cfa"><span class=en-original lang=en><a href=#tutorial><span class=secno>1.2 </span>Tutorial</a>
118     </span><ol>
119     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="4cc3646bed3970b883d0e3670dc846be"><span class=en-original lang=en><a href=#a-background-number-crunching-worker><span class=secno>1.2.1 </span>A background number-crunching worker</a></span></li>
120     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="d6b18f36ab82a61c165ccf567ef56b09"><span class=en-original lang=en><a href=#a-worker-for-updating-a-client-side-database><span class=secno>1.2.2 </span>A worker for updating a client-side database</a></span></li>
121     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="5d6e6c3a38a06321f9ff944393eb85c8"><span class=en-original lang=en><a href=#worker-used-for-background-i/o><span class=secno>1.2.3 </span>Worker used for background I/O</a></span></li>
122     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="00a7ff1b4687e65bfd54d8f34ac6c51b"><span class=en-original lang=en><a href=#shared-workers><span class=secno>1.2.4 </span>Shared workers</a></span></li>
123     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="0165a00ce6ba433bb49fb40d83e80072"><span class=en-original lang=en><a href=#delegation><span class=secno>1.2.5 </span>Delegation</a></span></li>
124     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="b073b1b0d03d81d0427c4bbb5a1056dc"><span class=en-original lang=en><a href=#providing-libraries><span class=secno>1.2.6 </span>Providing libraries</a></span></ol></ol></li>
125 wakaba 1.139 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="adf81d9200d74ed3c0f2c032a0531bf6"><span class=en-original lang=en><a href=#conformance-requirements><span class=secno>2 </span>Conformance requirements</a>
126 wakaba 1.111 </span><ol>
127 wakaba 1.139 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="b161941cca2282efa472ccf0fc205795"><span class=en-original lang=en><a href=#dependencies><span class=secno>2.1 </span>Dependencies</a></span></ol></li>
128     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="50b097cb49254c35d708954ba4f90f62"><span class=en-original lang=en><a href=#terminology><span class=secno>3 </span>Terminology</a></span></li>
129     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="211638ee3831cd03e9865c803584d48d"><span class=en-original lang=en><a href=#infrastructure><span class=secno>4 </span>Infrastructure</a>
130     </span><ol>
131     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="f3f7863eb788bc470f20764d323ff03a"><span class=en-original lang=en><a href=#the-global-scope><span class=secno>4.1 </span>The global scope</a>
132 wakaba 1.111 </span><ol>
133 wakaba 1.139 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="07444422623a61768c995caee39d6f3f"><span class=en-original lang=en><a href=#the-workerglobalscope-abstract-interface><span class=secno>4.1.1 </span>The <code>WorkerGlobalScope</code> abstract interface</a></span></li>
134     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="ffb909cb8c908fc02c8383085a89f4b3"><span class=en-original lang=en><a href=#dedicated-workers-and-the-dedicatedworkerglobalscope-interface><span class=secno>4.1.2 </span>Dedicated workers and the <code>DedicatedWorkerGlobalScope</code> interface</a></span></li>
135     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="4ce24e9ab32d066fc7ea5182fd496649"><span class=en-original lang=en><a href=#shared-workers-and-the-sharedworkerglobalscope-inteface><span class=secno>4.1.3 </span>Shared workers and the <code>SharedWorkerGlobalScope</code> inteface</a></span></ol></li>
136 wakaba 1.170 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="10cadfd4dee0f6d90bce2e454a454935"><span class=en-original lang=en><a href=#origins-of-workers><span class=secno>4.2 </span>Origins of workers</a></span></li>
137 wakaba 1.201 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="9122d7d6489cc64d53311a28df9a7b7c"><span class=en-original lang=en><a href=#the-event-loop><span class=secno>4.3 </span>The event loop</a></span></li>
138     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="c3ccc4e8fa8c8966f53c5e3c7357b10f"><span class=en-original lang=en><a href="#the-worker's-lifetime"><span class=secno>4.4 </span>The worker's lifetime</a></span></li>
139     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="6fdd4bae9c070e5723b541a38273cfdf"><span class=en-original lang=en><a href=#processing-model><span class=secno>4.5 </span>Processing model</a></span></li>
140     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="0496c82cbd953a1ece902781a7de83da"><span class=en-original lang=en><a href=#runtime-script-errors><span class=secno>4.6 </span>Runtime script errors</a></span></li>
141     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="6af442854ffea1d03d2ed67285533872"><span class=en-original lang=en><a href=#creating-workers><span class=secno>4.7 </span>Creating workers</a>
142 wakaba 1.111 </span><ol>
143 wakaba 1.201 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="2d746de24c1fbed5a79a81b6d15f9a82"><span class=en-original lang=en><a href=#the-abstractworker-abstract-interface><span class=secno>4.7.1 </span>The <code>AbstractWorker</code> abstract interface</a></span></li>
144     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="72c6786908301c829a4a85d3a1e12250"><span class=en-original lang=en><a href=#dedicated-workers-and-the-worker-interface><span class=secno>4.7.2 </span>Dedicated workers and the <code>Worker</code> interface</a></span></li>
145     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="279461ee7819a3134fc3984fdd1fca09"><span class=en-original lang=en><a href=#shared-workers-and-the-sharedworker-interface><span class=secno>4.7.3 </span>Shared workers and the <code>SharedWorker</code> interface</a></span></ol></ol></li>
146 wakaba 1.139 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="a47f7c0f403c3aa899ecde08deff9a43"><span class=en-original lang=en><a href=#apis-available-to-workers><span class=secno>5 </span>APIs available to workers</a>
147 wakaba 1.111 </span><ol>
148 wakaba 1.139 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="37e9da5ea67ea86a29b62f8e0d1111ef"><span class=en-original lang=en><a href=#importing-scripts-and-libraries><span class=secno>5.1 </span>Importing scripts and libraries</a></span></li>
149 wakaba 1.208 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="560332ac6821295be00c738df52032d0"><span class=en-original lang=en><a href=#the-workernavigator-object><span class=secno>5.2 </span>The <code>WorkerNavigator</code> object</a></span></li>
150 wakaba 1.139 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="7f0a8a7686a8cd5685cb93c1f3f82741"><span class=en-original lang=en><a href=#apis-defined-in-other-specifications><span class=secno>5.3 </span>APIs defined in other specifications</a></span></li>
151     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="8dda0154835b8739bd1ada5c0b5c089f"><span class=en-original lang=en><a href=#interface-objects-and-constructors><span class=secno>5.4 </span>Interface objects and constructors</a></span></li>
152     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="aae8cb440e8679d879f0df57ac164dc0"><span class=en-original lang=en><a href=#worker-locations><span class=secno>5.5 </span>Worker locations</a></span></ol></li>
153 wakaba 1.111 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="721ff2a311123f40dbb5fe64d58f47d3"><span class=en-original lang=en><a class=no-num href=#references>References</a></span></li>
154     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="e3edbd0e5dae2337ce9018ac56f33463"><span class=en-original lang=en><a class=no-num href=#acknowledgements>Acknowledgements</a></span></ol>
155     <!--end-toc-->
156 wakaba 1.159 <hr><h2 id=introduction class="has-ja-translation" data-ja-hash="0b79795d3efc95b9976c7c5b933afce2"><span class=en-original lang=en><span class=secno>1 </span>Introduction</span><span class=ja-translation lang=ja><span class=secno>1 </span>はじめに</span></h2>
157 wakaba 1.111
158     <h3 id=scope class="has-ja-translation" data-ja-hash="5d113f2038d289f391614c39043629e8"><span class=en-original lang=en><span class=secno>1.1 </span>Scope</span><span class=ja-translation lang=ja><span class=secno>1.1 </span>適用範囲</span></h3>
159    
160 wakaba 1.135 <p class="no-ja-translation" data-ja-hash="2b52ab89148ac538f9c9380fc5da5b2f"><span class=en-original lang=en><i>This section is non-normative.</i></span></p>
161 wakaba 1.111
162     <p class="no-ja-translation" data-ja-hash="2f78689edd39ccffc1a21b979c376f45"><span class=en-original lang=en>This specification defines an API for running scripts in the
163     background independently of any user interface scripts.</span></p>
164    
165     <p class="no-ja-translation" data-ja-hash="f41b6868a33d2c4d265857efdf426694"><span class=en-original lang=en>This allows for long-running scripts that are not interrupted by
166     scripts that respond to clicks or other user interactions, and
167     allows long tasks to be executed without yielding to keep the page
168     responsive.</span></p>
169    
170     <p class="no-ja-translation" data-ja-hash="52e3c8127ee80a92ae3709986b8f2450"><span class=en-original lang=en>Workers (as these background scripts are called herein) are
171     relatively heavy-weight, and are not intended to be used in large
172     numbers. For example, it would be inappropriate to launch one worker
173     for each pixel of a four megapixel image. The examples below show
174     some appropriate uses of workers.</span></p>
175    
176     <p class="no-ja-translation" data-ja-hash="497e60abbf38e141b92f7017f71dc302"><span class=en-original lang=en>Generally, workers are expected to be long-lived, have a high
177     start-up performance cost, and a high per-instance memory cost.</span></p>
178    
179    
180     <h3 id=tutorial class="has-ja-translation" data-ja-hash="368fe771261fcb18f7988833c9294a20"><span class=en-original lang=en><span class=secno>1.2 </span>Tutorial</span><span class=ja-translation lang=ja><span class=secno>1.2 </span>解説</span></h3>
181    
182 wakaba 1.135 <p class="no-ja-translation" data-ja-hash="2b52ab89148ac538f9c9380fc5da5b2f"><span class=en-original lang=en><i>This section is non-normative.</i></span></p>
183 wakaba 1.111
184     <p class="has-ja-translation" data-ja-hash="c98bec741e84294c9feae0d581f897b6"><span class=en-original lang=en>There are a variety of uses that workers can be put to. The
185     following subsections show various examples of this use.</span><span class=ja-translation lang=ja>労働者は色々なことに使えます。次の各節では、色々な使い方の例を示します。</span></p>
186    
187     <h4 id=a-background-number-crunching-worker class="has-ja-translation" data-ja-hash="03100d1ee403be709f47c37e6b55c758"><span class=en-original lang=en><span class=secno>1.2.1 </span>A background number-crunching worker</span><span class=ja-translation lang=ja><span class=secno>1.2.1 </span>数値処理背景労働者</span></h4>
188    
189 wakaba 1.135 <p class="no-ja-translation" data-ja-hash="2b52ab89148ac538f9c9380fc5da5b2f"><span class=en-original lang=en><i>This section is non-normative.</i></span></p>
190 wakaba 1.111
191     <p class="has-ja-translation" data-ja-hash="6656ef1c2fd445878e165388d704a723"><span class=en-original lang=en>The simplest use of workers is for performing a computationally
192     expensive task without interrupting the user interface.</span><span class=ja-translation lang=ja>労働者の一番単純な用法は、計算的に高価な仕事を利用者界面を中断させずに実行するというものです。</span></p>
193    
194 wakaba 1.159 <p class="has-ja-translation" data-ja-hash="14941a1ddb566828a9181bcecf3a815a"><span class=en-original lang=en>In this example, the main document spawns a worker to
195     (na&iuml;vely) compute prime numbers, and progressively displays the
196     most recently found prime number.</span><span class=ja-translation lang=ja>この例では、主たる文書が労働者を作って素数を (素朴な方法で) 計算させ、
197     新しく見つかった素数を順番に表示してゆきます。</span></p>
198 wakaba 1.111
199     <p class="has-ja-translation" data-ja-hash="97bcf42c4070cbcef605cfa277d832fb"><span class=en-original lang=en>The main page is as follows:</span><span class=ja-translation lang=ja>主たる頁は次の通りです。</span></p>
200    
201     <pre class="no-ja-translation" data-ja-hash="45b861d46157f155d38040db723bafd1"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
202     &lt;html&gt;
203     &lt;head&gt;
204     &lt;title&gt;Worker example: One-core computation&lt;/title&gt;
205     &lt;/head&gt;
206     &lt;body&gt;
207     &lt;p&gt;The highest prime number discovered so far is: &lt;output id="result"&gt;&lt;/output&gt;&lt;/p&gt;
208     &lt;script&gt;
209     var worker = new Worker('worker.js');
210     worker.onmessage = function (event) {
211     document.getElementById('result').textContent = event.data;
212     };
213     &lt;/script&gt;
214     &lt;/body&gt;
215     &lt;/html&gt;</span></pre>
216    
217 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="017be89223719af8ff417b78daf6e70a"><span class=en-original lang=en>The <code title=dom-Worker><a href=#dom-worker>Worker()</a></code> constructor call
218 wakaba 1.111 creates a worker and returns a <code><a href=#worker>Worker</a></code> object
219     representing that worker, which is used to communicate with the
220 wakaba 1.191 worker. That object's <code title=handler-Worker-onmessage><a href=#handler-worker-onmessage>onmessage</a></code> event handler allows the code to receive messages from the worker.</span></p>
221 wakaba 1.111
222     <p class="has-ja-translation" data-ja-hash="12a62a74d5156b6d85136f5fc41a4ee1"><span class=en-original lang=en>The worker itself is as follows:</span><span class=ja-translation lang=ja>労働者自体は次の通りです。</span></p>
223    
224     <pre class="no-ja-translation" data-ja-hash="35390f08d92125ad461fd6bb5969cb0c"><span class=en-original lang=en>var n = 1;
225     search: while (true) {
226     n += 1;
227     for (var i = 2; i &lt;= Math.sqrt(n); i += 1)
228     if (n % i == 0)
229     continue search;
230     // found a prime!
231     postMessage(n);
232     }</span></pre>
233    
234     <p class="no-ja-translation" data-ja-hash="48faeab09946f0578b4b421f4cf0a5db"><span class=en-original lang=en>The bulk of this code is simply an unoptimized search for a prime
235     number. To send a message back to the page, the <code title=dom-DedicatedWorkerGlobalScope-postMessage><a href=#dom-dedicatedworkerglobalscope-postmessage>postMessage()</a></code>
236     method is used to post a message when a prime is found.</span></p>
237    
238     <p class="has-ja-translation" data-ja-hash="add583522732edb8aca6202c451ddb27" data-ja-real-hash="19ee793c62fc7bda7447ccda3a91b44e"><span class=en-original lang=en><a href=http://www.whatwg.org/demos/workers/primes/page.html>View this example online</a>.</span><span class=ja-translation lang=ja><a href=http://www.whatwg.org/demos/workers/primes/page.html>この例をオンラインで表示する</a>。</span></p>
239    
240    
241    
242     <h4 id=a-worker-for-updating-a-client-side-database class="has-ja-translation" data-ja-hash="be08cb921deb5e88f7dcb3edbd9f0274"><span class=en-original lang=en><span class=secno>1.2.2 </span>A worker for updating a client-side database</span><span class=ja-translation lang=ja><span class=secno>1.2.2 </span>クライアント側データベースの更新のための労働者</span></h4>
243    
244 wakaba 1.135 <p class="no-ja-translation" data-ja-hash="2b52ab89148ac538f9c9380fc5da5b2f"><span class=en-original lang=en><i>This section is non-normative.</i></span></p>
245 wakaba 1.111
246     <p class="no-ja-translation" data-ja-hash="e8e4acfb27dabd6fd72aa5a4af7b7d25"><span class=en-original lang=en>In this example, the main document spawns a worker whose only
247     task is to listen for notifications from the server, and, when
248     appropriate, either add or remove data from the client-side
249     database.</span></p>
250    
251     <p class="has-ja-translation" data-ja-hash="88e890f11b614dc40f4d2453a66ec94f"><span class=en-original lang=en>Since no communication occurs between the worker and the main
252     page, the main page can start the worker by just doing:</span><span class=ja-translation lang=ja>労働者と主たる頁の間に通信は発生しませんので、
253     主たる頁は単に次のようにするだけで労働者を開始できます。</span></p>
254    
255     <pre class="no-ja-translation" data-ja-hash="c87d2a32789642a7a7353364dffa7c04"><span class=en-original lang=en>&lt;script&gt;
256     new Worker('worker.js');
257     &lt;/script&gt;</span></pre>
258    
259     <p class="has-ja-translation" data-ja-hash="12a62a74d5156b6d85136f5fc41a4ee1"><span class=en-original lang=en>The worker itself is as follows:</span><span class=ja-translation lang=ja>労働者自体は次の通りです。</span></p>
260    
261     <pre class="no-ja-translation" data-ja-hash="cfd35229b68e597b6a21322a3e3c1aea"><span class=en-original lang=en>var server = new WebSocket('ws://whatwg.org/database');
262     var database = openDatabase('demobase', '1.0', 'Demo Database', 10240);
263     server.onmessage = function (event) {
264     // data is in the format "command key value"
265     var data = event.data.split(' ');
266     switch (data[0]) {
267     case '+':
268     database.transaction(function(tx) {
269     tx.executeSql('INSERT INTO pairs (key, value) VALUES (?, ?)', data[1], data[2]);
270     });
271     case '-':
272     database.transaction(function(tx) {
273     tx.executeSql('DELETE FROM pairs WHERE key=? AND value=?', data[1], data[2]);
274     });
275     }
276     };</span></pre>
277    
278     <p class="no-ja-translation" data-ja-hash="df7990f8fb4ac6850b65c14c08446f5c"><span class=en-original lang=en>This connects to the server using the <code>WebSocket</code>
279     mechanism and opens the local database (which, we presume, has been
280     created earlier). The worker then just listens for messages from the
281     server and acts on them as appropriate, forever (or until the main
282     page is closed).</span></p>
283    
284     <p class="no-ja-translation" data-ja-hash="f0d091179997558acbbf256bd7379b3d"><span class=en-original lang=en><a href=http://www.whatwg.org/demos/workers/database-updater/page.html>View
285     this example online</a>. (This example will not actually function,
286     since the server does not actually exist and the database is not
287     created by this sample code.)</span></p>
288    
289    
290    
291     <h4 id=worker-used-for-background-i/o class="no-ja-translation" data-ja-hash="26a2e24494eb4f94591467b79f68f6f2"><span class=en-original lang=en><span class=secno>1.2.3 </span>Worker used for background I/O</span></h4>
292    
293 wakaba 1.135 <p class="no-ja-translation" data-ja-hash="2b52ab89148ac538f9c9380fc5da5b2f"><span class=en-original lang=en><i>This section is non-normative.</i></span></p>
294 wakaba 1.111
295     <p class="has-ja-translation" data-ja-hash="eb288220a303d56acd4e151bca42fe6e"><span class=en-original lang=en>In this example, the main document uses two workers, one for
296     fetching stock updates for at regular intervals, and one for
297     fetching performing search queries that the user requests.</span><span class=ja-translation lang=ja>この例では、主たる文書は2つの労働者を使います。
298     1つは一定間隔で株価の更新を取得するためのもので、もう1つは利用者の要求した検索の照会を行う取得のためのものです。</span></p>
299    
300     <p class="has-ja-translation" data-ja-hash="97bcf42c4070cbcef605cfa277d832fb"><span class=en-original lang=en>The main page is as follows:</span><span class=ja-translation lang=ja>主たる頁は次の通りです。</span></p>
301    
302     <pre class="no-ja-translation" data-ja-hash="a4e743797f3cad5ba0d0016878e0e28c"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
303     &lt;html&gt;
304     &lt;head&gt;
305     &lt;title&gt;Worker example: Stock ticker&lt;/title&gt;
306     &lt;script&gt;
307     // TICKER
308     var symbol = 'GOOG'; // default symbol to watch
309     var ticker = new Worker('ticker.js');
310    
311     // SEARCHER
312     var searcher = new Worker('searcher.js');
313     function search(query) {
314     searcher.postMessage(query);
315     }
316    
317     // SYMBOL SELECTION UI
318     function select(newSymbol) {
319     symbol = newSymbol;
320     ticker.postMessage(symbol);
321     }
322     &lt;/script&gt;
323     &lt;/head&gt;
324     &lt;body onload="search('')"&gt;
325     &lt;p&gt;&lt;output id="symbol"&gt;&lt;/output&gt; &lt;output id="value"&gt;&lt;/output&gt;&lt;/p&gt;
326     &lt;script&gt;
327     ticker.onmessage = function (event) {
328     var data = event.data.split(' ');
329     document.getElementById('symbol').textContent = data[0];
330     document.getElementById('value').textContent = data[1];
331     };
332     ticker.postMessage(symbol);
333     &lt;/script&gt;
334     &lt;p&gt;&lt;label&gt;Search: &lt;input type="text" autofocus oninput="search(this.value)"&gt;&lt;/label&gt;&lt;/p&gt;
335     &lt;ul id="results"&gt;&lt;/ul&gt;
336     &lt;script&gt;
337     searcher.onmessage = function (event) {
338     var data = event.data.split(' ');
339     var results = document.getElementById('results');
340     while (results.hasChildNodes()) // clear previous results
341     results.removeChild(results.firstChild);
342     for (var i = 0; i &lt; data.length; i += 1) {
343     // add a list item with a button for each result
344     var li = document.createElement('li');
345     var button = document.createElement('button');
346     button.value = data[i];
347     button.type = 'button';
348     button.onclick = function () { select(this.value); };
349     button.textContent = data[i];
350     li.appendChild(button);
351     results.appendChild(li);
352     }
353     };
354     &lt;/script&gt;
355     &lt;p&gt;(The data in this example is not real. Try searching for "Google" or "Apple".)&lt;/p&gt;
356     &lt;/body&gt;
357     &lt;/html&gt;</span></pre>
358    
359     <p class="has-ja-translation" data-ja-hash="4cc7e781e44db82f8bd32020954bb94a"><span class=en-original lang=en>The two workers use a common library for performing the actual
360     network calls. This library is as follows:</span><span class=ja-translation lang=ja>両労働者は実際のネットワークの呼び出しを行う共通のライブラリーを使います。
361     このライブラリーは次の通りです。</span></p>
362    
363     <pre class="no-ja-translation" data-ja-hash="764d750a19834bf904d276466724339c"><span class=en-original lang=en>function get(url) {
364     try {
365     var xhr = new XMLHttpRequest();
366     xhr.open('GET', url, false);
367     xhr.send();
368     return xhr.responseText;
369     } catch (e) {
370     return ''; // turn all errors into empty results
371     }
372     }</span></pre>
373    
374     <p class="has-ja-translation" data-ja-hash="ee10423864c33d68e8676bf88cb75046"><span class=en-original lang=en>The stock updater worker is as follows:</span><span class=ja-translation lang=ja>株価更新者の労働者は次の通りです。</span></p>
375    
376     <pre class="no-ja-translation" data-ja-hash="66ef47eaf421ea8066871b71807859be"><span class=en-original lang=en>importScripts('io.js');
377     var timer;
378     var symbol;
379     function update() {
380     postMessage(symbol + ' ' + get('stock.cgi?' + symbol));
381     timer = setTimeout(update, 10000);
382     }
383     onmessage = function (event) {
384     if (timer)
385     clearTimeout(timer);
386     symbol = event.data;
387     update();
388     };</span></pre>
389    
390     <p class="has-ja-translation" data-ja-hash="aa6a78ceb7b91cdf90925cc36c6c6676"><span class=en-original lang=en>The search query worker is as follows:</span><span class=ja-translation lang=ja>検索の照会の労働者は次の通りです。</span></p>
391    
392     <pre class="no-ja-translation" data-ja-hash="ac0353e2a69ae5ffdc861cca404ef9f0"><span class=en-original lang=en>importScripts('io.js');
393     onmessage = function (event) {
394     postMessage(get('search.cgi?' + event.data));
395     };</span></pre>
396    
397     <p class="has-ja-translation" data-ja-hash="add583522732edb8aca6202c451ddb27" data-ja-real-hash="5855651f68b535b77cb2b82bed593472"><span class=en-original lang=en><a href=http://www.whatwg.org/demos/workers/stocks/page.html>View this example online</a>.</span><span class=ja-translation lang=ja><a href=http://www.whatwg.org/demos/workers/stocks/page.html>この例をオンラインで表示する</a>。</span></p>
398    
399    
400     <h4 id=shared-workers class="has-ja-translation" data-ja-hash="634755c2f50b08b49a82f30428b1a961"><span class=en-original lang=en><span class=secno>1.2.4 </span>Shared workers</span><span class=ja-translation lang=ja><span class=secno>1.2.4 </span>共有労働者</span></h4>
401    
402 wakaba 1.135 <p class="no-ja-translation" data-ja-hash="2b52ab89148ac538f9c9380fc5da5b2f"><span class=en-original lang=en><i>This section is non-normative.</i></span></p>
403 wakaba 1.111
404     <p class="no-ja-translation" data-ja-hash="2ec2b66f1e8130c8e0552d348a633841"><span class=en-original lang=en>In this example, multiple windows (viewers) can be opened that
405     are all viewing the same map. All the windows share the same map
406     information, with a single worker coordinating all the viewers. Each
407     viewer can move around independently, but if they set any data on
408     the map, all the viewers are updated.</span></p>
409    
410     <p class="has-ja-translation" data-ja-hash="2bf6969d7d27e56c707ae9970fdd476f"><span class=en-original lang=en>The main page isn't interesting, it merely provides a way to open
411     the viewers:</span><span class=ja-translation lang=ja>主たる頁は特に何もなく、単に表示器を開くためだけのものです。</span></p>
412    
413     <pre class="no-ja-translation" data-ja-hash="e27ef9096d7661be60af654b55813524"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
414     &lt;html&gt;
415     &lt;head&gt;
416     &lt;title&gt;Workers example: Multiviewer&lt;/title&gt;
417     &lt;script&gt;
418     function openViewer() {
419     window.open('viewer.html');
420     }
421     &lt;/script&gt;
422     &lt;/head&gt;
423     &lt;body&gt;
424     &lt;p&gt;&lt;button type=button onclick="openViewer()"&gt;Open a new
425     viewer&lt;/button&gt;&lt;/p&gt;
426     &lt;p&gt;Each viewer opens in a new window. You can have as many viewers
427     as you like, they all view the same data.&lt;/p&gt;
428     &lt;/body&gt;
429     &lt;/html&gt;</span></pre>
430    
431     <p class="has-ja-translation" data-ja-hash="cee02afe1e87e7182f5219ccf54757ca"><span class=en-original lang=en>The viewer is more involved:</span><span class=ja-translation lang=ja>表示器はもっと色々しています。</span></p>
432    
433 wakaba 1.203 <pre class="no-ja-translation" data-ja-hash="96676bde8a2e10817b7d76a726dc26f9"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
434 wakaba 1.111 &lt;html&gt;
435     &lt;head&gt;
436     &lt;title&gt;Workers example: Multiviewer viewer&lt;/title&gt;
437     &lt;script&gt;
438     var worker = new SharedWorker('worker.js', 'core');
439    
440     // CONFIGURATION
441     function configure(event) {
442     if (event.data.substr(0, 4) != 'cfg ') return;
443     var name = event.data.substr(4).split(' ', 1);
444     // update display to mention our name is name
445     document.getElementsByTagName('h1')[0].textContent += ' ' + name;
446     // no longer need this listener
447     worker.port.removeEventListener('message', configure, false);
448     }
449     worker.port.addEventListener('message', configure, false);
450    
451     // MAP
452     function paintMap(event) {
453     if (event.data.substr(0, 4) != 'map ') return;
454     var data = event.data.substr(4).split(',');
455     // display tiles data[0] .. data[8]
456     var canvas = document.getElementById('map');
457     var context = canvas.getContext('2d');
458     for (var y = 0; y &lt; 3; y += 1) {
459     for (var x = 0; x &lt; 3; x += 1) {
460     var tile = data[y * 3 + x];
461     if (tile == '0')
462     context.fillStyle = 'green';
463     else
464     context.fillStyle = 'maroon';
465     fillRect(x * 50, y * 50, 50, 50);
466     }
467     }
468     }
469     worker.port.addEventListener('message', paintMap, false);
470    
471     // PUBLIC CHAT
472     function updatePublicChat(event) {
473     if (event.data.substr(0, 4) != 'txt ') return;
474     var name = event.data.substr(4).split(' ', 1);
475     var message = event.data.substr(4 + length(name) + 1);
476     // display "&lt;name&gt; message" in public chat
477     var dialog = document.getElementById('public');
478     var dt = document.createElement('dt');
479     dt.textContent = name;
480     dialog.appendChild(dt);
481     var dd = document.createElement('dd');
482     dd.textContent = message;
483     dialog.appendChild(dd);
484     }
485     worker.port.addEventListener('message', updatePublicChat, false);
486    
487     // PRIVATE CHAT
488     function startPrivateChat(event) {
489     if (event.data.substr(0, 4) != 'msg ') return;
490     var name = event.data.substr(4).split(' ', 1);
491     var port = event.ports[0];
492     // display a private chat UI
493     var ul = document.getElementById('private');
494     var li = document.createElement('li');
495     var h3 = document.createElement('h3');
496     h3.textContent = 'Private chat with ' + name;
497     li.appendChild(h3);
498     var dialog = document.createElement('dialog');
499     var addMessage = function(name, message) {
500     var dt = document.createElement('dt');
501     dt.textContent = name;
502     dialog.appendChild(dt);
503     var dd = document.createElement('dd');
504     dd.textContent = message;
505     dialog.appendChild(dd);
506     };
507     port.onmessage = function (event) {
508     addMessage(name, event.data);
509     };
510     li.appendChild(dialog);
511     var form = document.createElement('form');
512     var p = document.createElement('p');
513     var input = document.createElement('input');
514     input.size = 50;
515     p.appendChild(input);
516     p.appendChild(document.createTextNode(' '));
517     var button = document.createElement('button');
518     button.textContent = 'Post';
519     p.appendChild(button);
520     form.onsubmit = function () {
521     port.postMessage(input.value);
522     addMessage('me', input.value);
523     input.value = '';
524     return false;
525     };
526     form.appendChild(p);
527     li.appendChild(form);
528     }
529     worker.port.addEventListener('message', startPrivateChat, false);
530 wakaba 1.203
531     worker.port.start();
532 wakaba 1.111 &lt;/script&gt;
533     &lt;/head&gt;
534     &lt;body&gt;
535     &lt;h1&gt;Viewer&lt;/h1&gt;
536     &lt;h2&gt;Map&lt;/h2&gt;
537     &lt;p&gt;&lt;canvas id="map" height=150 width=150&gt;&lt;/canvas&gt;&lt;/p&gt;
538     &lt;p&gt;
539     &lt;button type=button onclick="worker.port.postMessage('mov left')"&gt;Left&lt;/button&gt;
540     &lt;button type=button onclick="worker.port.postMessage('mov up')"&gt;Up&lt;/button&gt;
541     &lt;button type=button onclick="worker.port.postMessage('mov down')"&gt;Down&lt;/button&gt;
542     &lt;button type=button onclick="worker.port.postMessage('mov right')"&gt;Right&lt;/button&gt;
543     &lt;button type=button onclick="worker.port.postMessage('set 0')"&gt;Set 0&lt;/button&gt;
544     &lt;button type=button onclick="worker.port.postMessage('set 1')"&gt;Set 1&lt;/button&gt;
545     &lt;/p&gt;
546     &lt;h2&gt;Public Chat&lt;/h2&gt;
547     &lt;dialog id="public"&gt;&lt;/dialog&gt;
548     &lt;form onsubmit="worker.port.postMessage('txt ' + message.value); message.value = ''; return false;"&gt;
549     &lt;p&gt;
550     &lt;input type="text" name="message" size="50"&gt;
551     &lt;button&gt;Post&lt;/button&gt;
552     &lt;/p&gt;
553     &lt;/form&gt;
554     &lt;h2&gt;Private Chat&lt;/h2&gt;
555     &lt;ul id="private"&gt;&lt;/ul&gt;
556     &lt;/body&gt;
557     &lt;/html&gt;
558     </span></pre>
559    
560     <p class="has-ja-translation" data-ja-hash="397850dab731150b72d5f0276dab0081"><span class=en-original lang=en>There are several key things worth noting about the way the
561     viewer is written.</span><span class=ja-translation lang=ja>表示器の書き方についていくつか注意したい重要な点があります。</span></p>
562    
563     <p class="has-ja-translation" data-ja-hash="8bc9c1f9e0e102128838ea8c31c51306"><span class=en-original lang=en><strong>Multiple listeners</strong>. Instead of a single message
564     processing function, the code here attaches multiple event
565     listeners, each one performing a quick check to see if it is
566     relevant for the message. In this example it doesn't make much
567     difference, but if multiple authors wanted to collaborate using a
568     single port to communicate with a worker, it would allow for
569     independent code instead of changes having to all be made to a
570     single event handling function.</span><span class=ja-translation lang=ja><strong>複数の聴取器</strong>。この符号では、メッセージ処理関数を1つ用意する代わりに、
571     複数の事象聴取器を付与し、それぞれが、それがメッセージに関連するかどうかを見るためにさらりと検査を行っています。
572     この例では大きな違いにはなりませんが、複数の著者が労働者と通信するために1つのポートを使って協調したい場合には、
573     独立した符号にできるので変更がある度に1つの事象取扱関数をいじらざるを得なくて済みます。</span></p>
574    
575     <p class="no-ja-translation" data-ja-hash="ce2f17c1c25589a0d4507c6fa9c1f532"><span class=en-original lang=en>Registering event listeners in this way also allows you to
576     unregister specific listeners when you are done with them, as is
577     done with the <code title="">configure()</code> method in this
578     example.</span></p>
579    
580     <p class="has-ja-translation" data-ja-hash="4eb1fa2095f65662225da4c52db274f1"><span class=en-original lang=en>Finally, the worker:</span><span class=ja-translation lang=ja>最後に、労働者は次のようになります。</span></p>
581    
582 wakaba 1.159 <pre class="no-ja-translation" data-ja-hash="2a6833ffcfe9252a21a8582ad69a4adf"><span class=en-original lang=en>
583     var nextName = 0;
584 wakaba 1.111 function getNextName() {
585     // this could use more friendly names
586     // but for now just return a number
587     return nextName++;
588     }
589    
590     var map = [
591     [0, 0, 0, 0, 0, 0, 0],
592     [1, 1, 0, 1, 0, 1, 1],
593     [0, 1, 0, 1, 0, 0, 0],
594     [0, 1, 0, 1, 0, 1, 1],
595     [0, 0, 0, 1, 0, 0, 0],
596     [1, 0, 0, 1, 1, 1, 1],
597     [1, 1, 0, 1, 1, 0, 1],
598     ];
599    
600     function wrapX(x) {
601     if (x &lt; 0) return wrapX(x + map[0].length);
602     if (x &gt;= map[0].length) return wrapX(x - map[0].length);
603     return x;
604     }
605    
606     function wrapY(y) {
607     if (y &lt; 0) return wrapY(y + map.length);
608     if (y &gt;= map[0].length) return wrapY(y - map.length);
609     return y;
610     }
611    
612     function sendMapData(callback) {
613     var data = '';
614     for (var y = viewer.y-1; y &lt;= viewer.y+1; y += 1) {
615     for (var x = viewer.x-1; x &lt;= viewer.x+1; x += 1) {
616     if (data != '')
617     data += ',';
618     data += map[y][x];
619     }
620     }
621     callback('map ' + data);
622     }
623    
624     var viewers = {};
625     onconnect = function (event) {
626     event.ports[0]._name = getNextName();
627     event.ports[0]._data = { port: event.port, x: 0, y: 0, };
628     viewers[event.ports[0]._name] = event.port._data;
629     event.ports[0].postMessage('cfg ' + name);
630     event.ports[0].onmessage = getMessage;
631     sendMapData(event.ports[0].postMessage);
632     };
633    
634     function getMessage(event) {
635     switch (event.data.substr(0, 4)) {
636     case 'mov ':
637     var direction = event.data.substr(4);
638     var dx = 0;
639     var dy = 0;
640     switch (direction) {
641     case 'up': dy = -1; break;
642     case 'down': dy = 1; break;
643     case 'left': dx = -1; break;
644     case 'right': dx = 1; break;
645     }
646     event.target._data.x = wrapX(event.target._data.x + dx);
647     event.target._data.y = wrapY(event.target._data.y + dy);
648     sendMapData(event.target.postMessage);
649     break;
650     case 'set ':
651     var value = event.data.substr(4);
652     map[event.target._data.y][event.target._data.x] = value;
653     for (var viewer in viewers)
654     sendMapData(viewers[viewer].port.postMessage);
655     break;
656     case 'txt ':
657     var name = event.target._name;
658     var message = event.data.substr(4);
659     for (var viewer in viewers)
660     viewers[viewer].port.postMessage('txt ' + name + ' ' + message);
661     break;
662     case 'msg ':
663     var party1 = event._data;
664     var party2 = viewers[event.data.substr(4).split(' ', 1)];
665     if (party2) {
666     var channel = new MessageChannel();
667     party1.port.postMessage('msg ' + party2.name, [channel.port1]);
668     party2.port.postMessage('msg ' + party1.name, [channel.port2]);
669     }
670     break;
671     }
672     }</span></pre>
673    
674     <p class="no-ja-translation" data-ja-hash="80f59a8dae1df6b25c537e5041683f5d"><span class=en-original lang=en><strong>Connecting to multiple pages</strong>. The script uses
675     the <code title=handler-SharedWorkerGlobalScope-onconnect><a href=#handler-sharedworkerglobalscope-onconnect>onconnect</a></code>
676     event listener to listen for multiple connections.</span></p>
677    
678     <p class="has-ja-translation" data-ja-hash="5ce666b6338718b46fb0dee22dbea88c"><span class=en-original lang=en><strong>Direct channels</strong>. When the worker receives a
679     "msg" message from one viewer naming another viewer, it sets up a
680     direct connection between the two, so that the two viewers can
681     communicate directly without the worker having to proxy all the
682     messages.</span><span class=ja-translation lang=ja><strong>直接通信路</strong>。労働者がある閲覧器から他の閲覧器を名指した「msg」メッセージを受信した時は、
683     両者間の直接の接続を設定し、労働者がすべてのメッセージを仲介せずとも両閲覧器が直接通信できるようにします。</span></p>
684    
685     <p class="has-ja-translation" data-ja-hash="add583522732edb8aca6202c451ddb27" data-ja-real-hash="8d892cfe0423f9a15e275e47c6b45600"><span class=en-original lang=en><a href=http://www.whatwg.org/demos/workers/multiviewer/page.html>View this example online</a>.</span><span class=ja-translation lang=ja><a href=http://www.whatwg.org/demos/workers/multiviewer/page.html>この例をオンラインで表示する</a>。</span></p>
686    
687    
688     <h4 id=delegation class="has-ja-translation" data-ja-hash="57b11d3816e9f83adb4dd2ecb2a311b5"><span class=en-original lang=en><span class=secno>1.2.5 </span>Delegation</span><span class=ja-translation lang=ja><span class=secno>1.2.5 </span>委譲</span></h4>
689    
690 wakaba 1.135 <p class="no-ja-translation" data-ja-hash="2b52ab89148ac538f9c9380fc5da5b2f"><span class=en-original lang=en><i>This section is non-normative.</i></span></p>
691 wakaba 1.111
692     <p class="no-ja-translation" data-ja-hash="318b797bf0c9a2cdaa476f36993911b4"><span class=en-original lang=en>With multicore CPUs becoming prevalent, one way to obtain better
693     performance is to split computationally expensive tasks amongst
694     multiple workers. In this example, a computationally expensive task
695     that is to be performed for every number from 1 to 10,000,000 is
696     farmed out to ten subworkers.</span></p>
697    
698     <p class="has-ja-translation" data-ja-hash="c5074121435848ef6ad420f030cb5060"><span class=en-original lang=en>The main page is as follows, it just reports the result:</span><span class=ja-translation lang=ja>主たる頁は次の通りで、単に結果を報告するだけです。</span></p>
699    
700 wakaba 1.207 <pre class="no-ja-translation" data-ja-hash="b3d5b7301a62f1c4679a2bc6353b3369"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
701 wakaba 1.111 &lt;html&gt;
702     &lt;head&gt;
703 wakaba 1.207 &lt;title&gt;Worker example: Multicore computation&lt;/title&gt;
704 wakaba 1.111 &lt;/head&gt;
705     &lt;body&gt;
706 wakaba 1.207 &lt;p&gt;Result: &lt;output id="result"&gt;&lt;/output&gt;&lt;/p&gt;
707 wakaba 1.111 &lt;script&gt;
708     var worker = new Worker('worker.js');
709     worker.onmessage = function (event) {
710     document.getElementById('result').textContent = event.data;
711     };
712     &lt;/script&gt;
713     &lt;/body&gt;
714     &lt;/html&gt;</span></pre>
715    
716     <p class="has-ja-translation" data-ja-hash="12a62a74d5156b6d85136f5fc41a4ee1"><span class=en-original lang=en>The worker itself is as follows:</span><span class=ja-translation lang=ja>労働者自体は次の通りです。</span></p>
717    
718     <pre class="no-ja-translation" data-ja-hash="c2f14df3c3648ecb143c9e271b6721df"><span class=en-original lang=en>// settings
719     var num_workers = 10;
720     var items_per_worker = 1000000;
721    
722     // start the workers
723     var result = 0;
724     var pending_workers = num_workers;
725     for (var i = 0; i &lt; num_workers; i += 1) {
726     var worker = new Worker('core.js');
727     worker.postMessage(i * items_per_worker);
728     worker.postMessage((i+1) * items_per_worker);
729     worker.onmessage = storeResult;
730     }
731    
732     // handle the results
733     function storeResult(event) {
734     result += 1*event.data;
735     pending_workers -= 1;
736     if (pending_workers &lt;= 0)
737     postMessage(result); // finished!
738     }</span></pre>
739    
740     <p class="has-ja-translation" data-ja-hash="f9236b42d2a99d988b848353511797fc"><span class=en-original lang=en>It consists of a loop to start the subworkers, and then a handler
741     that waits for all the subworkers to respond.</span><span class=ja-translation lang=ja>これは部分労働者を開始するループと、
742     すべての部分労働者が応答するのを待つ取扱器から成っています。</span></p>
743    
744     <p class="has-ja-translation" data-ja-hash="53f3483f6fffa25f7c6963e58d683f43"><span class=en-original lang=en>The subworkers are implemented as follows:</span><span class=ja-translation lang=ja>部分労働者は次のように実装します。</span></p>
745    
746     <pre class="no-ja-translation" data-ja-hash="90fc569c1c634a87b725ebbe4cc1e2f4"><span class=en-original lang=en>var start;
747     onmessage = getStart;
748     function getStart(event) {
749     start = 1*event.data;
750     onmessage = getEnd;
751     }
752    
753     var end;
754     function getEnd(event) {
755     end = 1*event.data;
756     onmessage = null;
757     work();
758     }
759    
760     function work() {
761     var result = 0;
762     for (var i = start; i &lt; end; i += 1) {
763     // perform some complex calculation here
764     result += 1;
765     }
766     postMessage(result);
767     close();
768     }</span></pre>
769    
770     <p class="has-ja-translation" data-ja-hash="fbf1b083b03c85854a8e892ef8add172"><span class=en-original lang=en>They receive two numbers in two events, perform the computation
771     for the range of numbers thus specified, and then report the result
772     back to the parent.</span><span class=ja-translation lang=ja>部分労働者は2つの事象で2つの数を受信し、指定された数の範囲の計算を行った後、
773     結果を親に報告します。
774     </span></p>
775    
776     <p class="has-ja-translation" data-ja-hash="add583522732edb8aca6202c451ddb27" data-ja-real-hash="4318fb9a581a7c14e58bfb2d61809f0c"><span class=en-original lang=en><a href=http://www.whatwg.org/demos/workers/multicore/page.html>View this example online</a>.</span><span class=ja-translation lang=ja><a href=http://www.whatwg.org/demos/workers/multicore/page.html>この例をオンラインで表示する</a>。</span></p>
777    
778    
779     <h4 id=providing-libraries class="has-ja-translation" data-ja-hash="6c37218e175bff77f69bd84b1ab5da58"><span class=en-original lang=en><span class=secno>1.2.6 </span>Providing libraries</span><span class=ja-translation lang=ja><span class=secno>1.2.6 </span>ライブラリーの提供</span></h4>
780    
781 wakaba 1.135 <p class="no-ja-translation" data-ja-hash="2b52ab89148ac538f9c9380fc5da5b2f"><span class=en-original lang=en><i>This section is non-normative.</i></span></p>
782 wakaba 1.111
783     <p class="no-ja-translation" data-ja-hash="12371907fb7e8389f76fabaf7a5f8303"><span class=en-original lang=en>Suppose that a cryptography library is made available that
784     provides three tasks:</span></p>
785    
786 wakaba 1.159 <dl><dt class="has-ja-translation" data-ja-hash="6ea027035e660e254aba77f4bd9cb6e7"><span class=en-original lang=en>Generate a public/private key pair</span><span class=ja-translation lang=ja>公開鍵・秘密鍵の組の生成</span></dt>
787 wakaba 1.111
788     <dd class="no-ja-translation" data-ja-hash="cf9020803baa896d8a183fe324563704"><span class=en-original lang=en>Takes a port, on which it will send two messages, first the
789     public key and then the private key.</span></dd>
790    
791     <dt class="no-ja-translation" data-ja-hash="fb7dd035a8141087578088ce61f9db22"><span class=en-original lang=en>Given a plaintext and a public key, return the corresponding cyphertext</span></dt>
792    
793     <dd class="no-ja-translation" data-ja-hash="1d31efc883e22a218f807161c65291f0"><span class=en-original lang=en>Takes a port, to which any number of messages can be sent, the
794     first giving the public key, and the remainder giving the
795     plaintext, each of which is encrypted and then sent on that same
796     channel as the cyphertext. The user can close the port when it is
797     done encrypting content.</span></dd>
798    
799     <dt class="no-ja-translation" data-ja-hash="11ea02c6f203744166e5a89e81a81337"><span class=en-original lang=en>Given a cyphertext and a private key, return the corresponding plaintext</span></dt>
800    
801     <dd class="no-ja-translation" data-ja-hash="c157fe0e540c248dc1db29edbd80ff82"><span class=en-original lang=en>Takes a port, to which any number of messages can be sent, the
802     first giving the private key, and the remainder giving the
803     cyphertext, each of which is decrypted and then sent on that same
804     channel as the plaintext. The user can close the port when it is
805     done decrypting content.</span></dd>
806    
807 wakaba 1.159 </dl><p class="has-ja-translation" data-ja-hash="0e39ac88e71e60206c341926e3785dcd"><span class=en-original lang=en>The library itself is as follows:</span><span class=ja-translation lang=ja>ライブラリー自体は次のようになります。</span></p>
808 wakaba 1.111
809 wakaba 1.206 <pre class="no-ja-translation" data-ja-hash="9ead219adc5a1168e3a3bcba20c329b0"><span class=en-original lang=en>function handleMessage(e) {
810 wakaba 1.111 if (e.data == "genkeys")
811     genkeys(e.ports[0]);
812     else if (e.data == "encrypt")
813     encrypt(e.ports[0]);
814     else if (e.data == "decrypt")
815     decrypt(e.ports[0]);
816     }
817    
818     function genkeys(p) {
819     var keys = _generateKeyPair();
820     p.postMessage(keys[0]);
821     p.postMessage(keys[1]);
822     }
823    
824     function encrypt(p) {
825     var key, state = 0;
826     p.onmessage = function (e) {
827     if (state == 0) {
828     key = e.data;
829     state = 1;
830     } else {
831     p.postMessage(_encrypt(key, e.data));
832     }
833     };
834     }
835    
836     function decrypt(p) {
837     var key, state = 0;
838     p.onmessage = function (e) {
839     if (state == 0) {
840     key = e.data;
841     state = 1;
842     } else {
843     p.postMessage(_decrypt(key, e.data));
844     }
845     };
846     }
847    
848     // support being used as a shared worker as well as a dedicated worker
849 wakaba 1.206 if ('onmessage' in this) // dedicated worker
850 wakaba 1.111 onmessage = handleMessage;
851     else // shared worker
852     onconnect = function (e) { e.port.onmessage = handleMessage; }
853    
854    
855     // the "crypto" functions:
856    
857     function _generateKeyPair() {
858     return [Math.random(), Math.random()];
859     }
860    
861     function _encrypt(k, s) {
862     return 'encrypted-' + k + ' ' + s;
863     }
864    
865     function _decrypt(k, s) {
866     return s.substr(s.indexOf(' ')+1);
867     }</span></pre>
868    
869     <p class="no-ja-translation" data-ja-hash="e6e3003b829ed060f5926d1763f29c2e"><span class=en-original lang=en>Note that the crypto functions here are just stubs and don't do
870     real cryptography.</span></p>
871    
872     <p class="has-ja-translation" data-ja-hash="76f1d5866d92bc1036d1198cf4eda428"><span class=en-original lang=en>This library could be used as follows:</span><span class=ja-translation lang=ja>このライブラリーは次のように使うことができます。</span></p>
873    
874     <pre class="no-ja-translation" data-ja-hash="e88a411ca9b20f088116732dc0db6171"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
875     &lt;html&gt;
876     &lt;head&gt;
877     &lt;title&gt;Worker example: Crypto library&lt;/title&gt;
878     &lt;script&gt;
879     var crytoLib = new Worker('libcrypto-v1.js'); // or could use 'libcrypto-v2.js'
880     function getKeys() {
881     var state = 0;
882     cryptoLib.startConversation("genkeys").onmessage = function (e) {
883     if (state == 0)
884     document.getElementById('public').value = e.data;
885     else if (state == 1)
886     document.getElementById('private').value = e.data;
887     state += 1;
888     };
889     }
890     function enc() {
891     var port = cryptoLib.startConversation("encrypt");
892     port.postMessage(document.getElementById('public').value);
893     port.postMessage(document.getElementById('input').value);
894     port.onmessage = function (e) {
895     document.getElementById('input').value = e.data;
896     port.close();
897     };
898     }
899     function dec() {
900     var port = cryptoLib.startConversation("decrypt");
901     port.postMessage(document.getElementById('private').value);
902     port.postMessage(document.getElementById('input').value);
903     port.onmessage = function (e) {
904     document.getElementById('input').value = e.data;
905     port.close();
906     };
907     }
908     &lt;/script&gt;
909     &lt;style&gt;
910     textarea { display: block; }
911     &lt;/style&gt;
912     &lt;/head&gt;
913     &lt;body onload="getKeys()"&gt;
914     &lt;fieldset&gt;
915     &lt;legend&gt;Keys&lt;/legend&gt;
916     &lt;p&gt;&lt;label&gt;Public Key: &lt;textarea id="public"&gt;&lt;/textarea&gt;&lt;/label&gt;&lt;/p&gt;
917     &lt;p&gt;&lt;label&gt;Private Key: &lt;textarea id="private"&gt;&lt;/textarea&gt;&lt;/label&gt;&lt;/p&gt;
918     &lt;/fieldset&gt;
919     &lt;p&gt;&lt;label&gt;Input: &lt;textarea id="input"&gt;&lt;/textarea&gt;&lt;/label&gt;&lt;/p&gt;
920     &lt;p&gt;&lt;button onclick="enc()"&gt;Encrypt&lt;/button&gt; &lt;button onclick="dec()"&gt;Decrypt&lt;/button&gt;&lt;/p&gt;
921     &lt;/body&gt;
922     &lt;/html&gt;</span></pre>
923    
924     <p class="no-ja-translation" data-ja-hash="13181de825fa0e152c5a954e55715a15"><span class=en-original lang=en>A later version of the API, though, might want to offload all the
925     crypto work onto subworkers. This could be done as follows:</span></p>
926    
927 wakaba 1.206 <pre class="no-ja-translation" data-ja-hash="44541f0b3332c661f1465eaa011c42ad"><span class=en-original lang=en>function handleMessage(e) {
928 wakaba 1.111 if (e.data == "genkeys")
929     genkeys(e.ports[0]);
930     else if (e.data == "encrypt")
931     encrypt(e.ports[0]);
932     else if (e.data == "decrypt")
933     decrypt(e.ports[0]);
934     }
935    
936     function genkeys(p) {
937     var generator = new Worker('libcrypto-v2-generator.js');
938     generator.postMessage('', [p]);
939     }
940    
941     function encrypt(p) {
942     p.onmessage = function (e) {
943     var key = e.data;
944     var encryptor = new Worker('libcrypto-v2-encryptor.js');
945     encryptor.postMessage(key, [p]);
946     };
947     }
948    
949     function encrypt(p) {
950     p.onmessage = function (e) {
951     var key = e.data;
952     var decryptor = new Worker('libcrypto-v2-decryptor.js');
953     decryptor.postMessage(key, [p]);
954     };
955     }
956    
957     // support being used as a shared worker as well as a dedicated worker
958 wakaba 1.206 if ('onmessage' in this) // dedicated worker
959 wakaba 1.111 onmessage = handleMessage;
960     else // shared worker
961     onconnect = function (e) { e.ports[0].onmessage = handleMessage };
962     </span></pre>
963    
964     <p class="has-ja-translation" data-ja-hash="fc1d14c413a94a9015153067739845e7"><span class=en-original lang=en>The little subworkers would then be as follows.</span><span class=ja-translation lang=ja>小部分労働者は次の通りです。</span></p>
965    
966     <p class="has-ja-translation" data-ja-hash="66f9c4d246b0081919ced7e46c4a9db2"><span class=en-original lang=en>For generating key pairs:</span><span class=ja-translation lang=ja>鍵組の生成用:</span></p>
967    
968     <pre class="no-ja-translation" data-ja-hash="7fcbde64ee437c101414bcc98d9e1ee0"><span class=en-original lang=en>onmessage = function (e) {
969     var k = _generateKeyPair();
970     e.ports[0].postMessage(k[0]);
971     e.ports[0].postMessage(k[1]);
972     close();
973     }
974    
975     function _generateKeyPair() {
976     return [Math.random(), Math.random()];
977     }</span></pre>
978    
979     <p class="has-ja-translation" data-ja-hash="1f07f24df05f20de47483db4dfde2017"><span class=en-original lang=en>For encrypting:</span><span class=ja-translation lang=ja>暗号化用:</span></p>
980    
981     <pre class="no-ja-translation" data-ja-hash="94aaf906f90e9b3539c4219ef2be60cf"><span class=en-original lang=en>onmessage = function (e) {
982     var key = e.data;
983     e.ports[0].onmessage = function (e) {
984     var s = e.data;
985     postMessage(_encrypt(key, s));
986     }
987     }
988    
989     function _encrypt(k, s) {
990     return 'encrypted-' + k + ' ' + s;
991     }</span></pre>
992    
993     <p class="has-ja-translation" data-ja-hash="abf884f40593747f458e7d7400b1eb21"><span class=en-original lang=en>For decrypting:</span><span class=ja-translation lang=ja>解読用:</span></p>
994    
995     <pre class="no-ja-translation" data-ja-hash="c91e2f3055da293b534ac3c10648b23e"><span class=en-original lang=en>onmessage = function (e) {
996     var key = e.data;
997     e.ports[0].onmessage = function (e) {
998     var s = e.data;
999     postMessage(_decrypt(key, s));
1000     }
1001     }
1002    
1003     function _decrypt(k, s) {
1004     return s.substr(s.indexOf(' ')+1);
1005     }</span></pre>
1006    
1007 wakaba 1.159 <p class="no-ja-translation" data-ja-hash="c8da0ee0afd0a36dc51fa6bebbb8a3e9"><span class=en-original lang=en>Notice how the users of the API don't have to even know that this
1008     is happening &mdash; the API hasn't changed; the library can
1009 wakaba 1.111 delegate to subworkers without changing its API, even though it is
1010     accepting data using message channels.</span></p>
1011    
1012     <p class="has-ja-translation" data-ja-hash="add583522732edb8aca6202c451ddb27" data-ja-real-hash="22a665d401474bea0ab24f5873ba4d61"><span class=en-original lang=en><a href=http://www.whatwg.org/demos/workers/crypto/page.html>View this example online</a>.</span><span class=ja-translation lang=ja><a href=http://www.whatwg.org/demos/workers/crypto/page.html>この例をオンラインで表示する</a>。</span></p>
1013    
1014    
1015    
1016    
1017     <h2 id=conformance-requirements class="has-ja-translation" data-ja-hash="05644f41fb2fbf61aaab52464b2edf3b"><span class=en-original lang=en><span class=secno>2 </span>Conformance requirements</span><span class=ja-translation lang=ja><span class=secno>2 </span>適合性要件</span></h2>
1018    
1019     <p class="has-ja-translation" data-ja-hash="8b0f72fe04577949924ab1e2997e0d8b"><span class=en-original lang=en>All diagrams, examples, and notes in this specification are
1020     non-normative, as are all sections explicitly marked non-normative.
1021     Everything else in this specification is normative.</span><span class=ja-translation lang=ja>この仕様書のすべての図、例示、注意書き、ならびに規定の一部ではないと明記したすべての節は、
1022     規定の一部ではありません。
1023     この仕様書のそれ以外の部分はすべて規定の一部です。</span></p>
1024    
1025     <p class="has-ja-translation" data-ja-hash="8adc9958d29b879426b71b5b9eae46db"><span class=en-original lang=en>The key words "MUST", "MUST NOT", "REQUIRED", <!--"SHALL", "SHALL
1026     NOT",--> "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
1027     "OPTIONAL" in the normative parts of this document are to be
1028     interpreted as described in RFC2119. For readability, these words do
1029     not appear in all uppercase letters in this specification. <a href=#refsRFC2119>[RFC2119]</a></span><span class=ja-translation lang=ja>この文書の規定の部分にあるキーワード「<em class=rfc2119 title="MUST">しなければなりません</em>」、
1030     「<em class=rfc2119 title="MUST NOT">してはなりません</em>」、
1031     「<em class=rfc2119 title="REQUIRED">必須です</em>」、<!--"SHALL", "SHALL
1032     NOT",-->「<em class=rfc2119 title="SHOULD">するべきです</em>」、
1033     「<em class=rfc2119 title="SHOULD NOT">するべきではありません</em>」、
1034     「<em class=rfc2119 title="RECOMMENDED">推奨します</em>」、「<em class=rfc2119 title="MAY">して構いません</em>」、
1035     「<em class=rfc2119 title="OPTIONAL">任意です</em>」は、 RFC 2119 で説明されているように解釈します。
1036     この仕様書<ins class=ja-note>の原文</ins>では、
1037     可読性の観点から、
1038     これらの語<ins class=ja-note>の原語</ins>のすべて大文字による表記は行っていません。
1039     <a href=#refsRFC2119>[RFC2119]</a></span></p>
1040    
1041     <p class="has-ja-translation" data-ja-hash="63dc4357c416e0e0f292a5f662ca71ab"><span class=en-original lang=en>Requirements phrased in the imperative as part of algorithms
1042     (such as "strip any leading space characters" or "return false and
1043     abort these steps") are to be interpreted with the meaning of the
1044     key word ("must", "should", "may", etc) used in introducing the
1045     algorithm.</span><span class=ja-translation lang=ja>算法の一部として<ins class=ja-note>動作の指示の形で (原文では</ins>命令形で<ins class=ja-note>) </ins>記述された要件
1046     (例えば「先頭の間隔文字をすべて除去します」や「偽を返し、これらの段階を停止します」)
1047     は、算法を紹介するに当たって使われたキーワード (<em class=rfc2119 title="MUST">しなければなりません</em>、
1048     <em class=rfc2119 title="SHOULD">するべきです</em>、<em class=rfc2119 title="MAY">して構いません</em>など) の意味により解釈します。</span></p>
1049    
1050     <p class="has-ja-translation" data-ja-hash="a5a0db584980ce3f2448983d6188b2d1"><span class=en-original lang=en>Some conformance requirements are phrased as requirements on
1051     attributes, methods or objects. Such requirements are to be
1052     interpreted as requirements on user agents.</span><span class=ja-translation lang=ja>いくつかの適合性要件は属性やメソッドやオブジェクトの要件として説明されています。
1053     そのような要件は、利用者エージェントに関する要件として解釈します。</span></p>
1054    
1055     <p class="has-ja-translation" data-ja-hash="27386c326b98d878b3c408c60b6095b0"><span class=en-original lang=en>Conformance requirements phrased as algorithms or specific steps
1056     may be implemented in any manner, so long as the end result is
1057     equivalent. (In particular, the algorithms defined in this
1058     specification are intended to be easy to follow, and not intended to
1059     be performant.)</span><span class=ja-translation lang=ja>算法や特定の段階として説明されている適合性要件は、
1060     最終的な結果が等価である限り、任意の方法で実装して<em class=rfc2119 title="MAY">構いません</em>。
1061     (特に、この仕様書で定義されている算法は追うのを簡単にしており、
1062     高性能であることを目指してはいません。)</span></p>
1063    
1064     <p class="has-ja-translation" data-ja-hash="e42931a32a5e7ad458e3ca1b87d741d9"><span class=en-original lang=en>The only conformance class defined by this specification is user
1065     agents.</span><span class=ja-translation lang=ja>この仕様書で定義する唯一の適合性の級は利用者エージェントです。</span></p>
1066    
1067     <p class="has-ja-translation" data-ja-hash="57959e6c42e8d5141b11e501bf60cc2f"><span class=en-original lang=en>User agents may impose implementation-specific limits on
1068     otherwise unconstrained inputs, e.g. to prevent denial of service
1069     attacks, to guard against running out of memory, or to work around
1070     platform-specific limitations.</span><span class=ja-translation lang=ja>利用者エージェントは、サービス拒否攻撃を防ぐため、
1071     記憶容量を使い尽くすことを防ぐため、
1072     あるいは環境特有の制限に対応するためなどの目的で、
1073     別段の制約のない入力に対して実装特有の制限を設けて<em class=rfc2119 title="MAY">構いません</em>。</span></p>
1074    
1075    
1076 wakaba 1.139 <h3 id=dependencies class="has-ja-translation" data-ja-hash="896f4eaa4f12972b56ed9cdd9a90b949"><span class=en-original lang=en><span class=secno>2.1 </span>Dependencies</span><span class=ja-translation lang=ja><span class=secno>2.1 </span>依存性</span></h3>
1077 wakaba 1.111
1078     <p class="has-ja-translation" data-ja-hash="8dc27a34324d9e41d25c6bbbc2d2551c"><span class=en-original lang=en>This specification relies on several other underlying
1079     specifications.</span><span class=ja-translation lang=ja>この仕様書は、他のいくつかの下位の仕様書に依存しています。</span></p>
1080    
1081 wakaba 1.159 <dl><dt class="no-ja-translation" data-ja-hash="6bff62b10d884fb77428cfe168cd783d"><span class=en-original lang=en>HTML5</span></dt>
1082 wakaba 1.111
1083     <dd>
1084    
1085     <p class="has-ja-translation" data-ja-hash="99d7a97f59faf316f6125ad288390f21"><span class=en-original lang=en>Many fundamental concepts from HTML5 are used by this
1086     specification. <a href=#refsHTML5>[HTML5]</a></span><span class=ja-translation lang=ja>この仕様書では、 HTML5 の多くの基礎的な概念を使用します。
1087     <a href=#refsHTML5>[HTML5]</a></span></p>
1088    
1089     </dd>
1090    
1091     <dt class="no-ja-translation" data-ja-hash="21838f6e93b1a2157b16dcb6281ff225"><span class=en-original lang=en>WebIDL</span></dt>
1092    
1093     <dd>
1094    
1095 wakaba 1.158 <p class="no-ja-translation" data-ja-hash="336ded24806a8bd7c04c235bef4cd598"><span class=en-original lang=en>The IDL blocks in this specification use the semantics of the
1096     WebIDL specification. <a href=#refsWEBIDL>[WEBIDL]</a></span></p>
1097 wakaba 1.111
1098     </dd>
1099    
1100 wakaba 1.159 </dl><h2 id=terminology class="has-ja-translation" data-ja-hash="e182a8a3f2adf774fb1c959df71b8600"><span class=en-original lang=en><span class=secno>3 </span>Terminology</span><span class=ja-translation lang=ja><span class=secno>3 </span>用語</span></h2>
1101 wakaba 1.111
1102     <p class="has-ja-translation" data-ja-hash="f99630e4a7f12f2c4ecb88e02bf4a644"><span class=en-original lang=en>The construction "a <code title="">Foo</code> object", where
1103     <code title="">Foo</code> is actually an interface, is sometimes
1104     used instead of the more accurate "an object implementing the
1105     interface <code title="">Foo</code>".</span><span class=ja-translation lang=ja>「<code title="">Foo</code> オブジェクト」という構文 (<code title="">Foo</code>
1106     は実際には界面) を時々使いますが、より正確な「界面 <code title="">Foo</code>
1107     を実装しているオブジェクト」の代わりに用いています。</span></p>
1108    
1109 wakaba 1.158 <p class="no-ja-translation" data-ja-hash="53202e038bee25bf5bb2edbf37c7cdce"><span class=en-original lang=en>The term DOM is used to refer to the API set made available to
1110 wakaba 1.111 scripts in Web applications, and does not necessarily imply the
1111     existence of an actual <code>Document</code> object or of any other
1112     <code>Node</code> objects as defined in the DOM Core
1113 wakaba 1.158 specifications. <a href=#refsDOMCORE>[DOMCORE]</a></span></p>
1114 wakaba 1.111
1115 wakaba 1.183 <p class="no-ja-translation" data-ja-hash="ac87df7cb7d80ebc0f2ec45d053c1178"><span class=en-original lang=en>An IDL attribute is said to be <em>getting</em> when its value is
1116 wakaba 1.111 being retrieved (e.g. by author script), and is said to be
1117 wakaba 1.183 <em>setting</em> when a new value is assigned to it.</span></p>
1118 wakaba 1.111 <p class="no-ja-translation" data-ja-hash="63fe78b97a0b5051e1ffbf6ee2f1e483"><span class=en-original lang=en>The term "JavaScript" is used to refer to ECMA262, rather than
1119     the official term ECMAScript, since the term JavaScript is more
1120     widely known. <a href=#refsECMA262>[ECMA262]</a></span></p>
1121    
1122 wakaba 1.139 <h2 id=infrastructure class="has-ja-translation" data-ja-hash="cba4f4cee5c6a3e6d8be8da68fa1234e"><span class=en-original lang=en><span class=secno>4 </span>Infrastructure</span><span class=ja-translation lang=ja><span class=secno>4 </span>基盤</span></h2>
1123 wakaba 1.111
1124     <p class="no-ja-translation" data-ja-hash="f38a96d03c61f343169a402b5c779db8"><span class=en-original lang=en>There are two kinds of workers; dedicated workers, and shared
1125     workers. Dedicated workers, once created, and are linked to their
1126     creator; but message ports can be used to communicate from a
1127     dedicated worker to multiple other browsing contexts or
1128     workers. Shared workers, on the other hand, are named, and once
1129     created any script running in the same <span>origin</span> can
1130     obtain a reference to that worker and communicate with it.</span></p>
1131    
1132    
1133 wakaba 1.139 <h3 id=the-global-scope class="has-ja-translation" data-ja-hash="16d7670f16b3aaf6130252e8f11702eb"><span class=en-original lang=en><span class=secno>4.1 </span>The global scope</span><span class=ja-translation lang=ja><span class=secno>4.1 </span>大域作用域</span></h3>
1134 wakaba 1.111
1135     <p class="has-ja-translation" data-ja-hash="216dee088449fef485a489ea8a7432f4"><span class=en-original lang=en>The global scope is the "inside" of a worker.</span><span class=ja-translation lang=ja>大域作用域は労働者の「内側」です。</span></p>
1136    
1137 wakaba 1.139 <h4 id=the-workerglobalscope-abstract-interface class="has-ja-translation" data-ja-hash="fe5227371e801f4ac588d0d07472a900" data-ja-real-hash="be491e4df478a7115eae60853f3c23aa"><span class=en-original lang=en><span class=secno>4.1.1 </span>The <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> abstract interface</span><span class=ja-translation lang=ja><span class=secno>4.1.1 </span><code><a href=#workerglobalscope>WorkerGlobalScope</a></code> 抽象界面</span></h4>
1138 wakaba 1.111
1139 wakaba 1.184 <pre class="idl no-ja-translation" data-ja-hash="d9cd48b2a099afc1664485c2bce9e8b6"><span class=en-original lang=en>interface <dfn id=workerglobalscope>WorkerGlobalScope</dfn> {
1140 wakaba 1.111 readonly attribute <a href=#workerglobalscope>WorkerGlobalScope</a> <a href=#dom-workerglobalscope-self title=dom-WorkerGlobalScope-self>self</a>;
1141     readonly attribute <a href=#workerlocation>WorkerLocation</a> <a href=#dom-workerglobalscope-location title=dom-WorkerGlobalScope-location>location</a>;
1142    
1143     void <a href=#dom-workerglobalscope-close title=dom-WorkerGlobalScope-close>close</a>();
1144 wakaba 1.137 <!-- v2-onclose attribute <span>Function</span> <span title="handler-WorkerGlobalScope-onclose">onclose</span>;
1145     --> attribute <span>Function</span> <a href=#handler-workerglobalscope-onerror title=handler-WorkerGlobalScope-onerror>onerror</a>;
1146 wakaba 1.154 };
1147 wakaba 1.184 <a href=#workerglobalscope>WorkerGlobalScope</a> implements <a href=#workerutils>WorkerUtils</a>;
1148     <a href=#workerglobalscope>WorkerGlobalScope</a> implements <span>EventTarget</span>;</span></pre>
1149 wakaba 1.111
1150     <p class="no-ja-translation" data-ja-hash="0a5104552951765122b762e943a821b0"><span class=en-original lang=en>The <dfn id=dom-workerglobalscope-self title=dom-WorkerGlobalScope-self><code>self</code></dfn> attribute
1151     must return the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object itself.</span></p>
1152    
1153 wakaba 1.112 <p class="no-ja-translation" data-ja-hash="e48d78d83311d57328ab69a17167fffc"><span class=en-original lang=en>The <dfn id=dom-workerglobalscope-location title=dom-WorkerGlobalScope-location><code>location</code></dfn>
1154 wakaba 1.111 attribute must return the <code><a href=#workerlocation>WorkerLocation</a></code> object created
1155     for the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object when the worker was
1156     created. It represents the <span>absolute URL</span> of the script
1157 wakaba 1.112 that was used to initialize the worker, after any redirects.</span></p>
1158 wakaba 1.111
1159 wakaba 1.159 <hr><p class="no-ja-translation" data-ja-hash="c205c04fbfcc56617b82329c66dbda4a"><span class=en-original lang=en>When a script invokes the <dfn id=dom-workerglobalscope-close title=dom-WorkerGlobalScope-close><code>close()</code></dfn>
1160 wakaba 1.111 method on a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, the user agent
1161     must run the following steps (atomically):</span></p>
1162    
1163 wakaba 1.159 <ol><li><p class="no-ja-translation" data-ja-hash="af4d5ddb9edfb1a69b29ed3140620794"><span class=en-original lang=en>Discard any <span title=concept-task>tasks</span> that
1164 wakaba 1.111 have been added to the <span>event loop</span>'s <span title="task
1165     queue">task queues</span>.</span></p>
1166    
1167     <!-- v2-onclose
1168 wakaba 1.195 <li><p class="no-ja-translation" data-ja-hash="38810e04c906ff1907d4cd0641948aab"><span class=en-original lang=en><span>Queue a task</span> to <span>fire a simple
1169     event</span> named <code title="event-close">close</code> at the
1170 wakaba 1.111 <code>WorkerGlobalScope</code> object.</span></p></li>
1171     -->
1172    
1173     <li><p class="no-ja-translation" data-ja-hash="1e713e7163b783674600c93aed418557"><span class=en-original lang=en>Set the worker's <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object's
1174     <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to
1175     true. (This prevents any further tasks from being queued.)</span></li>
1176    
1177     <li><p class="no-ja-translation" data-ja-hash="37da2c132b44ba85602699d1ef93c598"><span class=en-original lang=en>Disentangle all the ports in the list of <a href="#the-worker's-ports">the worker's
1178     ports</a>.</span></li>
1179    
1180 wakaba 1.191 </ol><p class="no-ja-translation" data-ja-hash="11fd57fd42153141cd3d7fc2b6979e1b"><span class=en-original lang=en>The following are the <span>event handlers</span> (and their
1181     corresponding <span title="event handler event type">event handler
1182     event types</span>) that must be supported, as IDL attributes, by
1183     objects implementing the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>
1184     interface:</span></p>
1185 wakaba 1.111
1186 wakaba 1.191 <table><thead><tr><th class="no-ja-translation" data-ja-hash="46dae5ae74433c86ed36cf8244812e71"><span class=en-original lang=en><span title="event handlers">Event handler</span> </span><th class="no-ja-translation" data-ja-hash="3fc98eebba71602c62d8b2fd74645dc9"><span class=en-original lang=en><span>Event handler event type</span>
1187 wakaba 1.159 </span><tbody><!-- v2-onclose <tr><td class="no-ja-translation" data-ja-hash="8299f4100f9c690ddf7935714f58b453"><span class=en-original lang=en><dfn title="handler-WorkerGlobalScope-onclose"><code>onclose</code></dfn> </span><td class="no-ja-translation" data-ja-hash="e899358e829911a25c083ed9bc6519e6"><span class=en-original lang=en> <code title="event-close">close</code> --></span><tr><td class="no-ja-translation" data-ja-hash="08a21be8031dd240d32ac8ab2b17a9ac"><span class=en-original lang=en><dfn id=handler-workerglobalscope-onerror title=handler-WorkerGlobalScope-onerror><code>onerror</code></dfn> </span><td class="no-ja-translation" data-ja-hash="bf1b78c16e7c3a3de662d83f487bffff"><span class=en-original lang=en> <code title=event-error>error</code>
1188 wakaba 1.208 </span></table><hr><p class="no-ja-translation" data-ja-hash="cccaf784af1f9110ccf7b4e77e30717a"><span class=en-original lang=en>The <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> interface must not exist if
1189     the interface's <span>relevant namespace object</span> is a
1190     <code>Window</code> object. <a href=#refsWEBIDL>[WEBIDL]</a></span></p>
1191    
1192    
1193    
1194     <h4 id=dedicated-workers-and-the-dedicatedworkerglobalscope-interface class="no-ja-translation" data-ja-hash="a4b427f41de050a77385a1705efbb7c1"><span class=en-original lang=en><span class=secno>4.1.2 </span>Dedicated workers and the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> interface</span></h4>
1195 wakaba 1.111
1196 wakaba 1.188 <pre class="idl no-ja-translation" data-ja-hash="77cfd043067c77163e5f8886b3e13e12"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
1197 wakaba 1.154 interface <dfn id=dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
1198 wakaba 1.188 void <a href=#dom-dedicatedworkerglobalscope-postmessage title=dom-DedicatedWorkerGlobalScope-postMessage>postMessage</a>(in any message, in optional <span>MessagePortArray</span> ports);<!--
1199 wakaba 1.111 <span>MessagePort</span> <span title="dom-DedicatedWorkerGlobalScope-startConversation">startConversation</span>(in any message);-->
1200 wakaba 1.137 attribute <span>Function</span> <a href=#handler-dedicatedworkerglobalscope-onmessage title=handler-DedicatedWorkerGlobalScope-onmessage>onmessage</a>;
1201 wakaba 1.111 };</span></pre>
1202    
1203     <p class="no-ja-translation" data-ja-hash="2b76e99642dd9984f9a5fb8a280c921c"><span class=en-original lang=en><code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> objects act as if they
1204     had an implicit <code>MessagePort</code> associated with them. This
1205     port is part of a channel that is set up when the worker is created,
1206     but it is not exposed. This object must never be garbage collected
1207     before the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span></p>
1208    
1209     <p class="no-ja-translation" data-ja-hash="3737098ad5998864275d8ee619bd864e"><span class=en-original lang=en>All messages received by that port must immediately be retargeted
1210     at the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span></p>
1211    
1212     <p class="no-ja-translation" data-ja-hash="8156ab5347965f42a9531625b8096a00"><span class=en-original lang=en>The <dfn id=dom-dedicatedworkerglobalscope-postmessage title=dom-DedicatedWorkerGlobalScope-postMessage><code>postMessage()</code></dfn><!--
1213     and <dfn
1214     title="dom-DedicatedWorkerGlobalScope-startConversation"><code>startConversation()</code></dfn>-->
1215     method<!--s (startConversation)--> on
1216     <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> objects must act as if, when
1217     invoked, it<!--/they (startConversation)--> immediately invoked the
1218     method of the same name on the port, with the same arguments, and
1219     returned the same return value.</span></p>
1220    
1221 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="49e133d1378e19b0e32d9ef1c8b4a96f"><span class=en-original lang=en>The following are the <span>event handlers</span> (and their
1222     corresponding <span title="event handler event type">event handler
1223     event types</span>) that must be supported, as IDL attributes, by
1224     objects implementing the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code>
1225     interface:</span></p>
1226 wakaba 1.111
1227 wakaba 1.191 <table><thead><tr><th class="no-ja-translation" data-ja-hash="46dae5ae74433c86ed36cf8244812e71"><span class=en-original lang=en><span title="event handlers">Event handler</span> </span><th class="no-ja-translation" data-ja-hash="3fc98eebba71602c62d8b2fd74645dc9"><span class=en-original lang=en><span>Event handler event type</span>
1228 wakaba 1.159 </span><tbody><tr><td class="no-ja-translation" data-ja-hash="0d8bd2da6a52d641c317fac6d1c953b2"><span class=en-original lang=en><dfn id=handler-dedicatedworkerglobalscope-onmessage title=handler-DedicatedWorkerGlobalScope-onmessage><code>onmessage</code></dfn> </span><td class="no-ja-translation" data-ja-hash="fe07e2527bf13c457386ab4807af84a0"><span class=en-original lang=en> <code title=event-message>message</code>
1229 wakaba 1.204 </span></table><p class="no-ja-translation" data-ja-hash="0b21e2810d6cf7fe860324377bffd741"><span class=en-original lang=en>For the purposes of the <span>application cache</span> networking
1230     model, a dedicated worker is an extension of the <span>cache
1231     host</span> from which it was created.</span></p>
1232 wakaba 1.111
1233    
1234    
1235 wakaba 1.139 <h4 id=shared-workers-and-the-sharedworkerglobalscope-inteface class="no-ja-translation" data-ja-hash="6ab8095d66816337c244beec43a0e6d4"><span class=en-original lang=en><span class=secno>4.1.3 </span>Shared workers and the <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> inteface</span></h4>
1236 wakaba 1.111
1237 wakaba 1.200 <pre class="idl no-ja-translation" data-ja-hash="6b77d85a80a9793487a476146ebf79ed"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
1238 wakaba 1.154 interface <dfn id=sharedworkerglobalscope>SharedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
1239 wakaba 1.111 readonly attribute DOMString <a href=#dom-sharedworkerglobalscope-name title=dom-SharedWorkerGlobalScope-name>name</a>;
1240 wakaba 1.200 readonly attribute <span>ApplicationCache</span> <span title=dom-SharedWorkerGlobalScope-applicationCache>applicationCache</span>;
1241 wakaba 1.137 attribute <span>Function</span> <a href=#handler-sharedworkerglobalscope-onconnect title=handler-SharedWorkerGlobalScope-onconnect>onconnect</a>;
1242 wakaba 1.111 };</span></pre>
1243    
1244     <p class="has-ja-translation" data-ja-hash="9d344498c69a5ed60029b76fb274beb2"><span class=en-original lang=en>Shared workers receive message ports through <code title=event-WorkerGlobalScope-connect>connect</code> events on
1245     their global object for each connection.</span><span class=ja-translation lang=ja>共有労働者は、各接続について大域オブジェクトの <code
1246     title=event-WorkerGlobalScope-connect>connect</code> 事象を通じてメッセージ・ポートを受信します。</span></p>
1247    
1248     <p class="no-ja-translation" data-ja-hash="582a890c60947f33bddb73ed33bb32f9"><span class=en-original lang=en>The <dfn id=dom-sharedworkerglobalscope-name title=dom-SharedWorkerGlobalScope-name><code>name</code></dfn>
1249     attribute must return the value it was assigned when the
1250     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object was created by the
1251     "<a href=#run-a-worker>run a worker</a>" algorithm. Its value represents the name
1252     that can be used to obtain a reference to the worker using the
1253     <code><a href=#sharedworker>SharedWorker</a></code> constructor.</span></p>
1254    
1255 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="371bd704ee56d8fdd6568c9a76f95481"><span class=en-original lang=en>The following are the <span>event handlers</span> (and their
1256     corresponding <span title="event handler event type">event handler
1257     event types</span>) that must be supported, as IDL attributes, by
1258     objects implementing the <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>
1259     interface:</span></p>
1260 wakaba 1.111
1261 wakaba 1.191 <table><thead><tr><th class="no-ja-translation" data-ja-hash="46dae5ae74433c86ed36cf8244812e71"><span class=en-original lang=en><span title="event handlers">Event handler</span> </span><th class="no-ja-translation" data-ja-hash="3fc98eebba71602c62d8b2fd74645dc9"><span class=en-original lang=en><span>Event handler event type</span>
1262 wakaba 1.159 </span><tbody><tr><td class="no-ja-translation" data-ja-hash="f198960aead81a70dcfd8fe22ce3e5c3"><span class=en-original lang=en><dfn id=handler-sharedworkerglobalscope-onconnect title=handler-SharedWorkerGlobalScope-onconnect><code>onconnect</code></dfn> </span><td class="no-ja-translation" data-ja-hash="01a017777bf3db29f5ec26ca1ad7aced"><span class=en-original lang=en> <code title=event-connect>connect</code>
1263 wakaba 1.204 </span></table><p class="no-ja-translation" data-ja-hash="8af726c2983bb9fc0a17514c08ab4a6d"><span class=en-original lang=en>For the purposes of the <span>application cache</span> networking
1264     model, a shared worker is its own <span>cache host</span>. The
1265     <a href=#run-a-worker>run a worker</a> algorithm takes care of associating the
1266     worker with an <span>application cache</span>.</span></p>
1267 wakaba 1.111
1268 wakaba 1.200 <p class="note no-ja-translation" data-ja-hash="a587dc6b1c6df31057cd237bbf76b264"><span class=en-original lang=en>The <code title=dom-SharedWorkerGlobalScope-applicationCache>applicationCache</code>
1269 wakaba 1.111 attribute returns the <code>ApplicationCache</code> object for the
1270     worker.</span></p><!-- normative conf criteria is in the appcache section
1271     -->
1272    
1273    
1274 wakaba 1.170 <h3 id=origins-of-workers class="no-ja-translation" data-ja-hash="f13b3937c992e49f9b4feea9b2724a18"><span class=en-original lang=en><span class=secno>4.2 </span>Origins of workers</span></h3>
1275 wakaba 1.111
1276     <p class="no-ja-translation" data-ja-hash="5d71247ae9c7e88e4244d78062ed4760"><span class=en-original lang=en>Both the <span>origin</span> and <span>effective script
1277     origin</span> of scripts running in workers are the
1278     <span>origin</span> of the <span>absolute URL</span> given in that
1279     the worker's <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
1280     represents.</span></p>
1281    
1282    
1283    
1284 wakaba 1.201 <h3 id=the-event-loop class="no-ja-translation" data-ja-hash="96715962ce61ea28085d7e170ec30e73"><span class=en-original lang=en><span class=secno>4.3 </span>The event loop</span></h3>
1285 wakaba 1.111
1286 wakaba 1.112 <p class="no-ja-translation" data-ja-hash="9da3324200d63a62412fc5bc671f7d95"><span class=en-original lang=en>Each <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object has an <span>event
1287     loop</span> distinct from those defined for <span title="unit of
1288     related similar-origin browsing contexts">units of related
1289     similar-origin browsing contexts</span>. This <span>event
1290     loop</span> has no associated <span>browsing context</span>, and its
1291     <span title="task queue">task queues</span> only have events,
1292     callbacks, and networking activity as <span title=concept-task>tasks</span>. The processing model of these
1293     <span title="event loop">event loops</span> is defined below in the
1294     <a href=#run-a-worker>run a worker</a> algorithm.</span></p>
1295 wakaba 1.111
1296     <p class="no-ja-translation" data-ja-hash="084ed34f256b8b7e4ff2b85cd92ca33b"><span class=en-original lang=en>Each <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object also has a <dfn id=dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</dfn> flag, which must
1297     initially be false, but which can get set to true by the algorithms
1298     in the processing model section below.</span></p>
1299    
1300 wakaba 1.190 <p class="no-ja-translation" data-ja-hash="a4898d27d9a1aab83b927c6ee06cf487"><span class=en-original lang=en>Once the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is set to
1301 wakaba 1.111 true, the <span>event loop</span>'s <span title="task queue">task
1302     queues</span> must discard any further <span title=concept-task>tasks</span> that would be added to them (tasks
1303 wakaba 1.190 already on the queue are unaffected except where otherwise
1304 wakaba 1.111 specified). Effectively, once the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is true,
1305     timers stop firing, notifications for all pending asynchronous
1306     operations are dropped, etc.</span></p>
1307    
1308    
1309 wakaba 1.133
1310 wakaba 1.201 <h3 id="the-worker's-lifetime" class="no-ja-translation" data-ja-hash="74a0efe3050847567026cd8638e4d2d6"><span class=en-original lang=en><span class=secno>4.4 </span>The worker's lifetime</span></h3>
1311 wakaba 1.111
1312     <p class="has-ja-translation" data-ja-hash="15eb0638e0de7d0e159c1214c48ba569"><span class=en-original lang=en>Workers communicate with other workers and with <span title="browsing context">browsing contexts</span> through <span title="channel messaging">message channels</span> and their
1313     <code>MessagePort</code> objects.</span><span class=ja-translation lang=ja>労働者は、メッセージ通信路とその <code>MessagePort</code>
1314     オブジェクトを通じて、他の労働者や閲覧文脈と通信します。</span></p>
1315    
1316     <p class="no-ja-translation" data-ja-hash="2c7d1a4ce717326e596bad596f0fc0bb"><span class=en-original lang=en>Each <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> <var title="">worker global
1317     scope</var> has a list of <dfn id="the-worker's-ports">the worker's ports</dfn>, which
1318     consists of all the <code>MessagePort</code> objects that are
1319     entangled with another port and that have one (but only one) port
1320     owned by <var title="">worker global scope</var>. This list includes
1321     <!--all the <code>MessagePort</code> objects that are in events
1322     pending in the <span>event loop</span>, as well as (commented out
1323     because in practice it makes no difference either way as far as I
1324     can tell, and it would be hard to strictly implement since these
1325     ports might not yet be across the thread boundary)--> the implicit
1326     <code>MessagePort</code> in the case of <a href=#dedicatedworkerglobalscope title=DedicatedWorkerGlobalScope>dedicated workers</a>.</span></p>
1327    
1328     <p class="no-ja-translation" data-ja-hash="1aeb90a4b706e7a9ff09953cd49aed7c"><span class=en-original lang=en>Each <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> also has a list of <dfn id="the-worker's-workers">the
1329     worker's workers</dfn>. Initially this list is empty; it is
1330     populated when the worker creates or obtains further workers.</span></p>
1331    
1332     <p class="no-ja-translation" data-ja-hash="065bd87a93010cf4e435c95f2e540af5"><span class=en-original lang=en>Finally, each <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> also has a list of
1333     <dfn id="the-worker's-documents">the worker's <code>Document</code>s</dfn>. Initially this list
1334     is empty; it is populated when the worker is created.</span></p>
1335    
1336     <p class="no-ja-translation" data-ja-hash="6a8fe8066ddde02f0b3e6e22079bbd7e"><span class=en-original lang=en>Whenever a <code>Document</code> <var title="">d</var> is <dfn id="add-a-document-to-the-worker's-documents" title="add a document to the worker's documents">added to the
1337     worker's <code>Document</code>s</dfn>, the user agent must, for each
1338     worker in the list of <a href="#the-worker's-workers">the worker's workers</a> whose list
1339     of <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> does not contain
1340     <var title="">d</var>, <a href="#add-a-document-to-the-worker's-documents" title="add a document to the worker's
1341     documents">add <var title="">d</var> to <var title="">q</var>'s
1342     <code>WorkerGlobalScope</code> owner's list of <span>the worker's
1343     <code>Document</code>s</span></a>.</span></p> <!-- suggestions welcome
1344     on making this sentence into understandable English -->
1345    
1346     <p class="no-ja-translation" data-ja-hash="c556389e6b192b4ac768940df1b3cffc"><span class=en-original lang=en>Whenever a <code>Document</code> object is <span title="discard a
1347     Document">discarded</span>, it must be removed from the list of
1348     <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> of each worker
1349     whose list contains that <code>Document</code>.</span></p>
1350    
1351 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="6dd988d790ec2b4c2000cb8c571a5a33"><span class=en-original lang=en>Given a <span>script's global object</span> <var title="">o</var>
1352 wakaba 1.111 when creating or obtaining a worker, the <dfn id=list-of-relevant-document-objects-to-add>list of relevant
1353     <code>Document</code> objects to add</dfn> depends on the type of
1354     <var title="">o</var>. If <var title="">o</var> is a
1355     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object (i.e. if we are creating a
1356     nested worker), then the relevant <code>Document</code>s are the
1357     <code>Document</code>s that are in <var title="">o</var>'s own list
1358     of <a href="#the-worker's-documents">the worker's <code>Document</code>s</a>. Otherwise, <var title="">o</var> is a <code>Window</code> object, and the relevant
1359     <code>Document</code> is just the <code>Document</code> that is the
1360     <span>active document</span> of the <code>Window</code> object <var title="">o</var>.</span></p>
1361    
1362 wakaba 1.159 <hr><p class="no-ja-translation" data-ja-hash="ea771ae7f86ae7c85f1418763117fa28"><span class=en-original lang=en>A worker is said to be a <dfn id=permissible-worker>permissible worker</dfn> if its
1363 wakaba 1.111 list of <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> is not
1364     empty.</span></p>
1365    
1366     <p class="no-ja-translation" data-ja-hash="e7407e6349a298d2bf4d87d06d147420"><span class=en-original lang=en>A worker is said to be a <dfn id=protected-worker>protected worker</dfn> if it is a
1367     <a href=#permissible-worker>permissible worker</a> and either it has outstanding
1368     timers, database transactions, or network connections, or its list
1369     of <a href="#the-worker's-ports">the worker's ports</a> is not empty, or its
1370     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> is actually a
1371     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object (i.e. the worker is a
1372     shared worker).</span></p>
1373    
1374     <p class="no-ja-translation" data-ja-hash="1a7b06a4fed1c22378b6b6f6ca13ffc2"><span class=en-original lang=en>A worker is said to be an <dfn id=active-needed-worker>active needed worker</dfn> if any
1375     of the <code>Document</code> objects in <a href="#the-worker's-documents">the worker's
1376     <code>Document</code>s</a> are <span>fully active</span>.</span></p>
1377    
1378     <p class="no-ja-translation" data-ja-hash="4182e47a8cba3978170630845be09eed"><span class=en-original lang=en>A worker is said to be a <dfn id=suspendable-worker>suspendable worker</dfn> if it is
1379     not an <a href=#active-needed-worker>active needed worker</a> but it is a
1380     <a href=#permissible-worker>permissible worker</a>.</span></p>
1381    
1382    
1383 wakaba 1.201 <h3 id=processing-model class="has-ja-translation" data-ja-hash="4eeffb677544f6c8799408c6b9021b4c"><span class=en-original lang=en><span class=secno>4.5 </span>Processing model</span><span class=ja-translation lang=ja><span class=secno>4.5 </span>処理モデル</span></h3>
1384 wakaba 1.111
1385 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="5a47191234a5ba8cc5977ab2cbc59aaa"><span class=en-original lang=en>When a user agent is to <dfn id=run-a-worker>run a worker</dfn> for a script with
1386     <span>URL</span> <var title="">url</var>, a browsing context <var title="">owner browsing context</var>, an origin <var title="">owner
1387     origin</var>, and with global scope <var title="">worker global
1388     scope</var>, it must run the following steps:</span></p>
1389 wakaba 1.111
1390 wakaba 1.159 <ol><li>
1391 wakaba 1.111
1392     <p class="no-ja-translation" data-ja-hash="699e58187adc9ee37990500a66c83a8f"><span class=en-original lang=en>Create a completely separate and parallel execution environment
1393     (i.e. a separate thread or process or equivalent construct), and
1394     run the rest of these steps asynchronously in that context.</span></p>
1395    
1396     </li>
1397    
1398     <li><p class="no-ja-translation" data-ja-hash="d41742425aaafe5999e11ca90b26f088"><span class=en-original lang=en>If <var title="">worker global scope</var> is actually a
1399     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object (i.e. the worker is a
1400     shared worker), and there are any <span title="relevant application
1401     cache">relevant application caches</span> that are identified by a
1402     manifest URL with the <span>same origin</span> as <var title="">url</var> and that have <var title="">url</var> as one of
1403     their entries, <em>not</em> excluding entries marked as <span title=concept-appcache-foreign>foreign</span>, then associate the
1404     <var title="">worker global scope</var> with the <span title=concept-appcache-selection>most appropriate application
1405     cache</span> of those that match.</span></li>
1406    
1407     <li>
1408    
1409 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="f89ca5941c6e329a40b0292e51c78eee"><span class=en-original lang=en>Attempt to <span>fetch</span> the resource identified by <var title="">url</var>, from the <var title="">owner origin</var>.</span></p>
1410     <!-- not http-origin privacy sensitive -->
1411 wakaba 1.111
1412 wakaba 1.195 <p class="no-ja-translation" data-ja-hash="c7ec78cc350a0982946c4705a844ec64"><span class=en-original lang=en>If the attempt fails, or if the attempt involves any redirects
1413 wakaba 1.112 to URIs that do not have the <span>same origin</span> as <var title="">url</var> (even if the final URI is at the <span>same
1414     origin</span> as the original <var title="">url</var>), then for
1415     each <code><a href=#worker>Worker</a></code> or <code><a href=#sharedworker>SharedWorker</a></code> object
1416     associated with <var title="">worker global scope</var>,
1417     <span>queue a task</span> to <span>fire a simple event</span>
1418 wakaba 1.195 named <code title=event-error>error</code> at that
1419 wakaba 1.112 object. Abort these steps.</span></p>
1420 wakaba 1.111
1421 wakaba 1.201 <p class="no-ja-translation" data-ja-hash="f1667590dddc3f064bc292826b67f086"><span class=en-original lang=en>If the attempt succeeds, then convert the script resource to
1422     Unicode by assuming it was encoded as UTF-8, to obtain its <var title="">source</var>.</span></p>
1423 wakaba 1.111
1424     <p class="no-ja-translation" data-ja-hash="c880bce97c5a1aadccd8989fc4ec8551"><span class=en-original lang=en>Let <var title="">language</var> be JavaScript.</span></p>
1425    
1426     <p class="note has-ja-translation" data-ja-hash="5ba762159d9de3f8bd326fe0bcfac206"><span class=en-original lang=en>As with <code>script</code> elements, the MIME
1427     type of the script is ignored. Unlike with <code>script</code>
1428     elements, there is no way to override the type. It's always
1429     assumed to be JavaScript.</span><span class=ja-translation lang=ja><code>script</code> 要素と同様に、スクリプトの MIME 型は無視します。
1430     <code>script</code> 要素とは異なり、
1431     型を上書きする方法はありません。スクリプトは常に JavaScript
1432 wakaba 1.183 と仮定します。</span></p>
1433 wakaba 1.111
1434     </li>
1435    
1436     <li>
1437    
1438     <p class="no-ja-translation" data-ja-hash="604d3f52a6756f627f0e747b0d06e6ae"><span class=en-original lang=en>A new <span title=concept-script>script</span> is now
1439     created, as follows.</span></p>
1440    
1441     <p class="no-ja-translation" data-ja-hash="2dfcd0f76cde607de6cc88d70f390825"><span class=en-original lang=en>Create a new <span>script execution environment</span>
1442     set up as appropriate for the scripting language <var title="">language</var>.</span></p>
1443    
1444     <p class="no-ja-translation" data-ja-hash="fdf8b5f9ba18a31a8f48670142f51442"><span class=en-original lang=en>Parse/compile/initialize <var title="">source</var> using that
1445     <span>script execution environment</span>, as appropriate for <var title="">language</var>, and thus obtain a <span>list of code
1446     entry-points</span>; set the <i>initial code entry-point</i> to
1447     the entry-point for any executable code to be immediately run.</span></p>
1448    
1449     <p class="no-ja-translation" data-ja-hash="129927904de4572e52f5bc380711aa10"><span class=en-original lang=en>Set the <span>script's global object</span> to <var title="">worker global scope</var>.</span></p>
1450    
1451     <p class="no-ja-translation" data-ja-hash="02eeb9a0f925368a93666886c94bf9bf"><span class=en-original lang=en>Set the <span>script's browsing context</span> to <var title="">owner browsing context</var>.</span></p>
1452    
1453     <p class="no-ja-translation" data-ja-hash="104fe9ff67aec2141cd0733499cfef92"><span class=en-original lang=en>Set the <span>script's URL character encoding</span> to
1454     UTF-8. (This is just used for encoding non-ASCII characters in the
1455     query component of URLs.)</span></p>
1456    
1457     <p class="no-ja-translation" data-ja-hash="7570c80d1bbf45f73eb74befed51740d"><span class=en-original lang=en>Set the <span>script's base URL</span> to <var title="">url</var>.</span></p>
1458    
1459     </li>
1460    
1461     <li>
1462    
1463 wakaba 1.195 <p class="no-ja-translation" data-ja-hash="0c5c3b38b3df11781c2391306b478710"><span class=en-original lang=en><strong>Closing orphan workers</strong>: Start monitoring the
1464 wakaba 1.111 worker such that no sooner than it stops being either a
1465     <a href=#protected-worker>protected worker</a> or a <a href=#suspendable-worker>suspendable
1466     worker</a>, and no later than it stops being a
1467     <a href=#permissible-worker>permissible worker</a>, <var title="">worker global
1468     scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is set
1469     to true<!-- v2-onclose and <span title="queue a task">a task is
1470 wakaba 1.195 queued</span> to <span>fire a simple event</span> named <code
1471 wakaba 1.111 title="event-close">close</code> at <var title="">worker global
1472     scope</var>-->.</span></p>
1473    
1474     </li>
1475    
1476     <li>
1477    
1478     <p class="no-ja-translation" data-ja-hash="24a8fa04f32239e0dafc1e98e466d6b4"><span class=en-original lang=en><strong>Suspending workers</strong>: Start monitoring the
1479     worker, such that whenever <var title="">worker global
1480     scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is false
1481     and the worker is a <a href=#suspendable-worker>suspendable worker</a>, the user
1482     agent suspends execution of script in that worker until such time
1483     as either the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag switches
1484     to true or the worker stops being a <a href=#suspendable-worker>suspendable
1485     worker</a>.</span></p>
1486    
1487     </li>
1488    
1489     <li>
1490    
1491     <p class="no-ja-translation" data-ja-hash="4321156bbce7d4613215c6cd962a1dc4"><span class=en-original lang=en><span title="jump to a code entry-point">Jump</span> to the
1492     <span title=concept-script>script</span>'s <i>initial code
1493     entry-point</i>, and let that run until it either returns, fails
1494     to catch an exception, or gets prematurely aborted by the
1495     "<a href=#kill-a-worker>kill a worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>"
1496     algorithms defined below.</span></p>
1497    
1498 wakaba 1.151 <!-- v2-onclose
1499     <p class="note no-ja-translation" data-ja-hash="e632e340409f851c9423aafe27afe24f"><span class=en-original lang=en>If the script gets aborted by the "<span>kill a
1500     worker</span>" algorithm, then that same algorithm will cause
1501     there to only be a single <span title="concept-task">task</span>
1502 wakaba 1.111 in the <span>event loop</span> at the next step, namely the task
1503 wakaba 1.151 for the <code title="message-close">close</code> event. The
1504     "<span>terminate a worker</span>" algorithm removes all the
1505 wakaba 1.111 events.</span></p>
1506 wakaba 1.151 -->
1507 wakaba 1.111
1508     </li>
1509    
1510     <li><p class="no-ja-translation" data-ja-hash="cfc4a3473c7cde1f5a4133c349682bab"><span class=en-original lang=en>If <var title="">worker global scope</var> is actually a
1511     <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the worker is
1512     a dedicated worker), then enable the <span>port message
1513     queue</span> of the worker's implicit port.</span></li>
1514    
1515     <li>
1516    
1517     <p class="no-ja-translation" data-ja-hash="ac8f871c5ad85c37527bc69c91141970"><span class=en-original lang=en><i title="">Event loop</i>: Wait until either there is a <span title=concept-task>task</span> in one of the <span>event
1518     loop</span>'s <span title="task queue">task queues</span> or <var title="">worker global scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is set
1519     to true.</span></p>
1520    
1521     </li>
1522    
1523     <li>
1524    
1525     <p class="no-ja-translation" data-ja-hash="bcc803e78dd6f07ff20eaa1ca0d23303"><span class=en-original lang=en>Run the oldest task on one of the <span>event loop</span>'s
1526     <span title="task queue">task queues</span>, if any. The user
1527     agent may pick any <span>task queue</span>.</span></p>
1528    
1529     <p class="note no-ja-translation" data-ja-hash="2a401c207ed88f5206b2eb8a90fc91a6"><span class=en-original lang=en>The handling of events or the execution of
1530     callbacks might get prematurely aborted by the "<a href=#kill-a-worker>kill a
1531     worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>" algorithms
1532     defined below.</span></p>
1533    
1534     </li>
1535    
1536     <li>
1537    
1538     <p class="no-ja-translation" data-ja-hash="0a62cf7225c4d215f05940236b695d05"><span class=en-original lang=en>Remove the task run in the previous step, if any, from its
1539     <span>task queue</span>.</span></p>
1540    
1541     </li>
1542    
1543     <li>
1544    
1545     <p class="no-ja-translation" data-ja-hash="779764122a6b7c3177782cbb51d5c914"><span class=en-original lang=en>If there are any more events in the <span>event loop</span>'s
1546     <span title="task queue">task queues</span> or if <var title="">worker global scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is set
1547     to false, then jump back to the step above labeled <i>event
1548     loop</i>.</span></p>
1549    
1550     </li>
1551    
1552     <li>
1553    
1554     <p class="no-ja-translation" data-ja-hash="fb906768fcbbd4867b29825a7893fe6e"><span class=en-original lang=en>If there are any outstanding transactions that have callbacks
1555     that involve <span title=concept-script>scripts</span> whose
1556     <span title="script's global object">global object</span> is the
1557     <var title="">worker global scope</var>, roll them back (without
1558     invoking any of the callbacks).</span></p>
1559    
1560     </li>
1561    
1562     <li>
1563    
1564     <p class="no-ja-translation" data-ja-hash="77a63b1af244b3bfda62ba8d7bf76ea9"><span class=en-original lang=en>Empty the <var title="">worker global scope</var>'s <span>list
1565     of active timeouts</span> and its <span>list of active
1566     intervals</span>.</span></p>
1567    
1568     </li>
1569    
1570     <!-- v2-onclose
1571     <li>
1572    
1573 wakaba 1.195 <p class="no-ja-translation" data-ja-hash="8e08be58e0d4244c08ef54bae738acc8"><span class=en-original lang=en>For each <code>Worker</code> or <code>SharedWorker</code>
1574 wakaba 1.111 object associated with <var title="">worker global scope</var>,
1575     <span>queue a task</span> to <span>fire a simple event</span>
1576 wakaba 1.195 named <code title="event-close">close</code> at that object.</span></p>
1577 wakaba 1.111
1578     </li>
1579     -->
1580 wakaba 1.159 </ol><hr><p class="no-ja-translation" data-ja-hash="cd7920afdad85f0228b3501a68536c9a"><span class=en-original lang=en>When a user agent is to <dfn id=kill-a-worker>kill a worker</dfn> it must
1581 wakaba 1.111 run the following steps in parallel with the worker's main loop (the
1582     "<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p>
1583    
1584 wakaba 1.159 <ol><!-- v2-onclose
1585 wakaba 1.195 <li><p class="no-ja-translation" data-ja-hash="3200831090c78502fc0cefc890a2c373"><span class=en-original lang=en>If the worker's <code>WorkerGlobalScope</code> object's
1586 wakaba 1.111 <span title="dom-WorkerGlobalScope-closing">closing</span> flag is
1587     false, <span>queue a task</span> to <span>fire a simple
1588 wakaba 1.195 event</span> named <code title="event-close">close</code> at the
1589 wakaba 1.111 worker's <code>WorkerGlobalScope</code> object.</span></p></li>
1590 wakaba 1.159 --><li><p class="no-ja-translation" data-ja-hash="4cc11724db0ff9175e61747ac0b27285"><span class=en-original lang=en>Set the worker's <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object's <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to
1591 wakaba 1.111 true.</span></li>
1592    
1593     <!-- v2-onclose
1594     <li><p class="no-ja-translation" data-ja-hash="4e3c7a6ff9a9f675020d75a10705eecc"><span class=en-original lang=en>Wait a user-agent-defined amount of time. If the "<span>run
1595     a worker</span>" processing model defined above immediately starts
1596     running event listeners registered for the <code
1597     title="event-close">close</code> event, this time should not be
1598     zero &mdash; the idea is that the <code
1599     title="event-close">close</code> event can be used to clean up
1600     when shutting down unexpectedly.</span></p></li>
1601     -->
1602    
1603     <li><p class="no-ja-translation" data-ja-hash="09b4e752d892d358db0eb9f001f5a26c"><span class=en-original lang=en>If there are any <span title=concept-task>tasks</span>
1604     queued in the <span>event loop</span>'s <span title="task
1605     queue">task queues</span><!-- v2-onclose other than the <code
1606     title="event-close">close</code> event that this algorithm just
1607     added-->, discard them without processing them.</span></li>
1608    
1609     <!-- v2-onclose
1610     <li><p class="no-ja-translation" data-ja-hash="f62a56e5aab0f0d08a9fa1e63f1983c5"><span class=en-original lang=en>If the <code title="event-close">close</code> event that
1611     this algorithm just queued hasn't yet been dispatched, then abort
1612     the script currently running in the worker.</span></p></li>
1613     -->
1614    
1615     <li><p class="has-ja-translation" data-ja-hash="a53f0acde0e4a21781c4b31d5a0f110a"><span class=en-original lang=en>Wait a user-agent-defined amount of time.</span><span class=ja-translation lang=ja>利用者エージェント定義の時間、待ちます。</span></li>
1616    
1617     <li><p class="no-ja-translation" data-ja-hash="fbb7fecc04423fb209634e5473bd7ec1"><span class=en-original lang=en>Abort the script currently running in the worker<!--
1618     v2-onclose (if any script is running, then it will be a handler for
1619     the <code title="event-close">close</code> event)-->.</span></li>
1620    
1621 wakaba 1.159 </ol><p class="no-ja-translation" data-ja-hash="065b6253058d6c118693257b76ed3444"><span class=en-original lang=en>User agents may invoke the "<a href=#kill-a-worker>kill a worker</a>"
1622 wakaba 1.111 processing model on a worker at any time, e.g. in response to user
1623     requests, in response to CPU quota management, or when a worker
1624     stops being an <a href=#active-needed-worker>active needed worker</a> if the worker
1625     continues executing even after its <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag was
1626     set to true.</span></p>
1627    
1628 wakaba 1.159 <hr><p class="no-ja-translation" data-ja-hash="af2a7479f3a6fc4f418bd8e7255c63be"><span class=en-original lang=en>When a user agent is to <dfn id=terminate-a-worker>terminate a worker</dfn> it must run
1629 wakaba 1.111 the following steps in parallel with the worker's main loop (the
1630     "<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p>
1631    
1632 wakaba 1.159 <ol><li><p class="no-ja-translation" data-ja-hash="4cc11724db0ff9175e61747ac0b27285"><span class=en-original lang=en>Set the worker's <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object's
1633 wakaba 1.111 <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to
1634     true.</span></li>
1635    
1636     <li><p class="no-ja-translation" data-ja-hash="a9cf50df3de2e3788a3125ace8cf61f5"><span class=en-original lang=en>If there are any <span title=concept-task>tasks</span>
1637     queued in the <span>event loop</span>'s <span title="task
1638     queue">task queues</span>, discard them without processing
1639     them.</span></li>
1640    
1641     <li><p class="has-ja-translation" data-ja-hash="fcb471f3c8cace3a86095dcb29d25515"><span class=en-original lang=en>Abort the script currently running in the worker.</span><span class=ja-translation lang=ja>労働者中で現在走っているスクリプトを停止します。</span></li>
1642    
1643     <li><p class="no-ja-translation" data-ja-hash="533246b74ff40190332c8ca473d635b5"><span class=en-original lang=en>If the worker's <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object is
1644     actually a <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the
1645     worker is a dedicated worker), then empty the <span>port message
1646     queue</span> of the port that the worker's implicit port is
1647     entangled with.</span></li>
1648    
1649 wakaba 1.159 </ol><hr><p class="no-ja-translation" data-ja-hash="232ca3945fb57a3baa9cc0675ff99caa"><span class=en-original lang=en>The <span>task source</span> for the tasks mentioned above is the
1650 wakaba 1.133 <span>DOM manipulation task source</span>.</span></p>
1651    
1652    
1653 wakaba 1.201 <h3 id=runtime-script-errors class="has-ja-translation" data-ja-hash="eb260f04266c3b94080b5c3f88c55a31"><span class=en-original lang=en><span class=secno>4.6 </span>Runtime script errors</span><span class=ja-translation lang=ja><span class=secno>4.6 </span>実行時スクリプト誤り</span></h3>
1654 wakaba 1.111
1655 wakaba 1.137 <p class="no-ja-translation" data-ja-hash="7bd3f1cdf85033908e9608a3f27fc9d1"><span class=en-original lang=en>Whenever an uncaught runtime script error occurs in one of the
1656     worker's scripts, if the error did not occur while handling a
1657     previous script error, the user agent must <span>report the
1658     error</span> using the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object's <code title=handler-WorkerGlobalScope-onerror><a href=#handler-workerglobalscope-onerror>onerror</a></code>
1659 wakaba 1.207 attribute.
1660    
1661     <a href=#refsHTML5>[HTML5]</a>
1662    
1663     </span></p>
1664 wakaba 1.111
1665 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="b1262662611c9475a728936b63510ee5"><span class=en-original lang=en>For shared workers, if the error is still <i title=concept-error-nothandled>not handled</i> afterwards, or if
1666 wakaba 1.120 the error occurred while handling a previous script error, the error
1667 wakaba 1.210 may be reported to the user.
1668 wakaba 1.207
1669     <a href=#refsHTML5>[HTML5]</a>
1670    
1671     </span></p>
1672 wakaba 1.111
1673 wakaba 1.120 <p class="no-ja-translation" data-ja-hash="44fbeda15b001a0dc82fe40089bb81bb"><span class=en-original lang=en>For dedicated workers, if the error is still <i title=concept-error-nothandled>not handled</i> afterwards, or if
1674     the error occurred while handling a previous script error, the user
1675 wakaba 1.111 agent must <span>queue a task</span> to <a href=#fire-a-worker-error-event>fire a worker error
1676     event</a> at the <code><a href=#worker>Worker</a></code> object associated with the
1677     worker.</span></p>
1678    
1679 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="35e5dc7e779c495262161a703b45ffbc"><span class=en-original lang=en>When the user agent is to <dfn id=fire-a-worker-error-event>fire a worker error event</dfn> at
1680 wakaba 1.111 a <code><a href=#worker>Worker</a></code> object, it must dispatch an event that uses
1681     the <code><a href=#errorevent>ErrorEvent</a></code> interface, with the name <code title=event-error>error</code>, that doesn't bubble and is
1682     cancelable, with its <code title=dom-ErrorEvent-message><a href=#dom-errorevent-message>message</a></code>, <code title=dom-ErrorEvent-filename><a href=#dom-errorevent-filename>filename</a></code>, and <code title=dom-ErrorEvent-lineno><a href=#dom-errorevent-lineno>lineno</a></code> attributes set
1683     appropriately. The default action of this event depends on whether
1684     the <code><a href=#worker>Worker</a></code> object is itself in a worker. If it is, and
1685     that worker is also a dedicated worker, then the user agent must
1686     again <span>queue a task</span> to <a href=#fire-a-worker-error-event>fire a worker error
1687     event</a> at the <code><a href=#worker>Worker</a></code> object associated with
1688 wakaba 1.210 <em>that</em> worker. Otherwise, then the error may be reported
1689 wakaba 1.111 to the user.</span></p>
1690    
1691 wakaba 1.133 <p class="no-ja-translation" data-ja-hash="232ca3945fb57a3baa9cc0675ff99caa"><span class=en-original lang=en>The <span>task source</span> for the tasks mentioned above is the
1692     <span>DOM manipulation task source</span>.</span></p>
1693    
1694 wakaba 1.204 <hr><pre class="idl no-ja-translation" data-ja-hash="2c93d3bb074ab09d4dc7e4678d8db4dd"><span class=en-original lang=en>interface <dfn id=errorevent>ErrorEvent</dfn> : Event {
1695 wakaba 1.138 readonly attribute DOMString <a href=#dom-errorevent-message title=dom-ErrorEvent-message>message</a>;
1696     readonly attribute DOMString <a href=#dom-errorevent-filename title=dom-ErrorEvent-filename>filename</a>;
1697 wakaba 1.111 readonly attribute unsigned long <a href=#dom-errorevent-lineno title=dom-ErrorEvent-lineno>lineno</a>;
1698 wakaba 1.138 void <a href=#dom-errorevent-initerrorevent title=dom-ErrorEvent-initErrorEvent>initErrorEvent</a>(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMString messageArg, in DOMString filenameArg, in unsigned long linenoArg);
1699 wakaba 1.111 };</span></pre>
1700    
1701 wakaba 1.204 <p class="no-ja-translation" data-ja-hash="e858dabb2d6c484114d8450e8180552d"><span class=en-original lang=en>The <dfn id=dom-errorevent-initerrorevent title=dom-ErrorEvent-initErrorEvent><code>initErrorEvent()</code></dfn>
1702     method must initialize the event in a manner analogous to the
1703     similarly-named method in the DOM Events interfaces. <a href=#refsDOMEVENTS>[DOMEVENTS]</a></span></p>
1704 wakaba 1.111
1705     <p class="no-ja-translation" data-ja-hash="c3d08d500554faa699d875e3015209b9"><span class=en-original lang=en>The <dfn id=dom-errorevent-message title=dom-ErrorEvent-message><code>message</code></dfn>
1706     attribute represents the error message.</span></p>
1707    
1708 wakaba 1.120 <p class="no-ja-translation" data-ja-hash="27affe597e932e64fc4db85fad27e91b"><span class=en-original lang=en>The <dfn id=dom-errorevent-filename title=dom-ErrorEvent-filename><code>filename</code></dfn>
1709 wakaba 1.111 attribute represents the <span>absolute URL</span> of the script in
1710 wakaba 1.120 which the error originally occurred.</span></p>
1711 wakaba 1.111
1712 wakaba 1.120 <p class="no-ja-translation" data-ja-hash="4322851b5483408bad81570533bf6251"><span class=en-original lang=en>The <dfn id=dom-errorevent-lineno title=dom-ErrorEvent-lineno><code>lineno</code></dfn>
1713     attribute represents the line number where the error occurred in the
1714 wakaba 1.111 script.</span></p>
1715    
1716    
1717    
1718 wakaba 1.201 <h3 id=creating-workers class="has-ja-translation" data-ja-hash="f0a4732d38d01e3d103b68468f9fe234"><span class=en-original lang=en><span class=secno>4.7 </span>Creating workers</span><span class=ja-translation lang=ja><span class=secno>4.7 </span>労働者の作成</span></h3>
1719 wakaba 1.111
1720 wakaba 1.201 <h4 id=the-abstractworker-abstract-interface class="has-ja-translation" data-ja-hash="fe5227371e801f4ac588d0d07472a900" data-ja-real-hash="fea226dea005bb8238586cd20b34aa2f"><span class=en-original lang=en><span class=secno>4.7.1 </span>The <code><a href=#abstractworker>AbstractWorker</a></code> abstract interface</span><span class=ja-translation lang=ja><span class=secno>4.7.1 </span><code><a href=#abstractworker>AbstractWorker</a></code> 抽象界面</span></h4>
1721 wakaba 1.111
1722 wakaba 1.208 <pre class="idl no-ja-translation" data-ja-hash="fe1bdb635f9560b4e343933b1e06ce22"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
1723     interface <dfn id=abstractworker>AbstractWorker</dfn> {
1724 wakaba 1.137 attribute <span>Function</span> <a href=#handler-abstractworker-onerror title=handler-AbstractWorker-onerror>onerror</a>;
1725     <!-- v2-onclose attribute <span>Function</span> <span title="handler-AbstractWorker-onclose">onclose</span>; -->
1726 wakaba 1.184 };
1727     <a href=#abstractworker>AbstractWorker</a> implements <span>EventTarget</span>;</span></pre>
1728 wakaba 1.111
1729 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="914ac190a41d2e561056f2eabed6074f"><span class=en-original lang=en>The following are the <span>event handlers</span> (and their
1730     corresponding <span title="event handler event type">event handler
1731     event types</span>) that must be supported, as IDL attributes, by
1732     objects implementing the <code><a href=#abstractworker>AbstractWorker</a></code> interface:</span></p>
1733 wakaba 1.111
1734 wakaba 1.191 <table><thead><tr><th class="no-ja-translation" data-ja-hash="46dae5ae74433c86ed36cf8244812e71"><span class=en-original lang=en><span title="event handlers">Event handler</span> </span><th class="no-ja-translation" data-ja-hash="3fc98eebba71602c62d8b2fd74645dc9"><span class=en-original lang=en><span>Event handler event type</span>
1735 wakaba 1.159 </span><tbody><tr><td class="no-ja-translation" data-ja-hash="797655c7ba76af81be91c1f52bf92e5d"><span class=en-original lang=en><dfn id=handler-abstractworker-onerror title=handler-AbstractWorker-onerror><code>onerror</code></dfn> </span><td class="no-ja-translation" data-ja-hash="bf1b78c16e7c3a3de662d83f487bffff"><span class=en-original lang=en> <code title=event-error>error</code>
1736 wakaba 1.111 <!-- v2-onclose --></span><!--<tr><td class="no-ja-translation" data-ja-hash="5bacdeaff60366f7971634c5de89cc1a"><span class=en-original lang=en><dfn title="handler-AbstractWorker-onclose"><code>onclose</code></dfn> </span><td class="no-ja-translation" data-ja-hash="e899358e829911a25c083ed9bc6519e6"><span class=en-original lang=en> <code title="event-close">close</code> -->
1737 wakaba 1.201 </span></table><h4 id=dedicated-workers-and-the-worker-interface class="no-ja-translation" data-ja-hash="4d0010617afd55731512f81d11e29921"><span class=en-original lang=en><span class=secno>4.7.2 </span>Dedicated workers and the <code><a href=#worker>Worker</a></code> interface</span></h4>
1738 wakaba 1.111
1739 wakaba 1.188 <pre class="idl no-ja-translation" data-ja-hash="b7c01ed542c5f747a4b64a1ac0008817"><span class=en-original lang=en>[<a href=#dom-worker title=dom-Worker>Constructor</a>(in DOMString scriptURL)]
1740 wakaba 1.111 interface <dfn id=worker>Worker</dfn> : <a href=#abstractworker>AbstractWorker</a> {
1741     void <a href=#dom-worker-terminate title=dom-Worker-terminate>terminate</a>();
1742    
1743 wakaba 1.188 void <a href=#dom-worker-postmessage title=dom-Worker-postMessage>postMessage</a>(in any message, in optional <span>MessagePortArray</span> ports);<!--
1744 wakaba 1.111 <span>MessagePort</span> <span title="dom-Worker-startConversation">startConversation</span>(in any message);-->
1745 wakaba 1.137 attribute <span>Function</span> <a href=#handler-worker-onmessage title=handler-Worker-onmessage>onmessage</a>;
1746 wakaba 1.111 };</span></pre>
1747    
1748     <p class="no-ja-translation" data-ja-hash="c01e50cb895f4eaa527128e73934b76c"><span class=en-original lang=en>The <dfn id=dom-worker-terminate title=dom-Worker-terminate><code>terminate()</code></dfn> method,
1749     when invoked, must cause the "<a href=#terminate-a-worker>terminate a worker</a>"
1750     algorithm to be run on the worker with with the object is
1751     associated.</span></p>
1752    
1753     <p class="no-ja-translation" data-ja-hash="f306158a0574a5376130b398642a9bc3"><span class=en-original lang=en><code><a href=#worker>Worker</a></code> objects act as if they had an implicit
1754     <code>MessagePort</code> associated with them. This port is part of
1755     a channel that is set up when the worker is created, but it is not
1756     exposed. This object must never be garbage collected before the
1757     <code><a href=#worker>Worker</a></code> object.</span></p>
1758    
1759     <p class="no-ja-translation" data-ja-hash="3347b0248a16085b3e8a073aed81f1d8"><span class=en-original lang=en>All messages received by that port must immediately be retargeted
1760     at the <code><a href=#worker>Worker</a></code> object.</span></p>
1761    
1762     <p class="no-ja-translation" data-ja-hash="58e82dfd8fd30e4340d6d1f7f7a08239"><span class=en-original lang=en>The <dfn id=dom-worker-postmessage title=dom-Worker-postMessage><code>postMessage()</code></dfn><!--
1763     and <dfn
1764     title="dom-Worker-startConversation"><code>startConversation()</code></dfn>-->
1765     method<!--s (startConversation)--> on <code><a href=#worker>Worker</a></code> objects
1766     must act as if, when invoked, it<!--/they (startConversation)-->
1767     immediately invoked the method of the same name on the port, with
1768     the same arguments, and returned the same return value.</span></p>
1769    
1770 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="b807e23fbf83a95fffd54ed260952030"><span class=en-original lang=en>The following are the <span>event handlers</span> (and their
1771     corresponding <span title="event handler event type">event handler
1772     event types</span>) that must be supported, as IDL attributes, by
1773     objects implementing the <code><a href=#worker>Worker</a></code> interface:</span></p>
1774 wakaba 1.111
1775 wakaba 1.191 <table><thead><tr><th class="no-ja-translation" data-ja-hash="46dae5ae74433c86ed36cf8244812e71"><span class=en-original lang=en><span title="event handlers">Event handler</span> </span><th class="no-ja-translation" data-ja-hash="3fc98eebba71602c62d8b2fd74645dc9"><span class=en-original lang=en><span>Event handler event type</span>
1776 wakaba 1.159 </span><tbody><tr><td class="no-ja-translation" data-ja-hash="936f67c1111af9460db35858624e3ce9"><span class=en-original lang=en><dfn id=handler-worker-onmessage title=handler-Worker-onmessage><code>onmessage</code></dfn> </span><td class="no-ja-translation" data-ja-hash="fe07e2527bf13c457386ab4807af84a0"><span class=en-original lang=en> <code title=event-message>message</code>
1777     </span></table><hr><p class="no-ja-translation" data-ja-hash="071022f5c10c547e44e7e3a998659333"><span class=en-original lang=en>When the <dfn id=dom-worker title=dom-Worker><code>Worker(<var title="">scriptURL</var>)</code></dfn> constructor is invoked, the
1778 wakaba 1.111 user agent must run the following steps:</span></p>
1779    
1780 wakaba 1.210 <ol><li><p class="no-ja-translation" data-ja-hash="c25e5a7c6b705956bf78fb7b5520d14b"><span class=en-original lang=en><span title="resolve a url">Resolve</span> the <var title="">scriptURL</var> argument relative to the <span>entry
1781 wakaba 1.121 script</span>'s <span title="script's base URL">base URL</span>,
1782     when the method is invoked.</span></li>
1783 wakaba 1.111
1784     <li><p class="has-ja-translation" data-ja-hash="160444b5a61c1e71f39825a01936237f"><span class=en-original lang=en>If this fails, throw a <code>SYNTAX_ERR</code>
1785     exception.</span><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
1786     例外を投げます。</span></li>
1787    
1788 wakaba 1.181 <li>
1789    
1790 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="f1c13da982ef60bb9a5ea38a82a62f88"><span class=en-original lang=en>If the <span>origin</span> of the resulting <span>absolute
1791 wakaba 1.181 URL</span> is not the <span title="same origin">same</span> as the
1792 wakaba 1.210 origin of the <span>entry script</span>, then throw a
1793 wakaba 1.201 <code>SECURITY_ERR</code> exception.</span></p>
1794 wakaba 1.181
1795     <p class="note no-ja-translation" data-ja-hash="70778ef58116d00717c7dad6522d3d5b"><span class=en-original lang=en>Thus, scripts must be external files with the same
1796     scheme as the original page: you can't load a script from a <code title="">data:</code> URL or <code title="">javascript:</code>
1797     URL, and a <code>https:</code> page couldn't start workers using
1798     scripts with <code>http:</code> URLs.</span></p>
1799    
1800     </li>
1801 wakaba 1.111
1802 wakaba 1.201 <li><p class="no-ja-translation" data-ja-hash="b392f10dceda3976231944259f9a7b7c"><span class=en-original lang=en>Create a new <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code>
1803     object. Let <var title="">worker global scope</var> be this new
1804     object.</span></li>
1805 wakaba 1.111
1806     <li><p class="no-ja-translation" data-ja-hash="5f11902e2367f64698f9d31e03a9d235"><span class=en-original lang=en>Create a new <code><a href=#worker>Worker</a></code> object, associated with
1807     <var title="">worker global scope</var>. Let <var title="">worker</var> be this new object.</span></li>
1808    
1809 wakaba 1.205 <li><p class="no-ja-translation" data-ja-hash="3d6f94d7c2eda8b4bc887b5ceebb149c"><span class=en-original lang=en><span>Create a new <code>MessagePort</code> object</span>
1810     owned by the <span title="script's global object">global
1811     object</span> of the <span title=concept-script>script</span> that
1812 wakaba 1.201 invoked the constructor. Let this be the <var title="">outside
1813 wakaba 1.111 port</var>.</span></li>
1814    
1815     <li><p class="has-ja-translation" data-ja-hash="91024eaaebdc23ea683ace1b3e316962"><span class=en-original lang=en>Associate the <var title="">outside port</var> with <var title="">worker</var>.</span><span class=ja-translation lang=ja><var title="">outside port</var> を <var
1816     title="">worker</var> に関連付けます。</span></li>
1817    
1818 wakaba 1.201 <li><p class="no-ja-translation" data-ja-hash="ae14e6a50adfe4e71fcf797d1d85a932"><span class=en-original lang=en><span>Create a new <code>MessagePort</code> object</span>
1819     owned by <var title="">worker global scope</var>. Let <var title="">inside port</var> be this new object.</span></li>
1820 wakaba 1.111
1821     <li><p class="no-ja-translation" data-ja-hash="c7df111ebbfeab4bffdbe80d19fdb0ba"><span class=en-original lang=en>Associate <var title="">inside port</var> with <var title="">worker global scope</var>.</span></li>
1822    
1823     <li><p class="no-ja-translation" data-ja-hash="bf2642ced659847cb4402165d2ab3a8e"><span class=en-original lang=en><span>Entangle</span> <var title="">outside port</var> and
1824     <var title="">inside port</var>.</span></li>
1825    
1826     <li><p class="has-ja-translation" data-ja-hash="2c5bd80faeda34c67a2533f32a477c51"><span class=en-original lang=en>Return <var title="">worker</var>, and run the following
1827     steps asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、以降の段階を非同期に走らせます。</span></li>
1828    
1829 wakaba 1.207 <!-- (this is done by the "run a worker" algorithm)
1830 wakaba 1.111 <li><p class="no-ja-translation" data-ja-hash="486f13bccfc4521d81f95f8a83a34838"><span class=en-original lang=en>Enable <var title="">inside port</var>'s <span>port message
1831 wakaba 1.207 queue</span>.</span></p></li>
1832     -->
1833 wakaba 1.111
1834     <li><p class="no-ja-translation" data-ja-hash="f226f14fb6f714ae0ebb2e1d19b80cb0"><span class=en-original lang=en>Enable <var title="">outside port</var>'s <span>port message
1835     queue</span>.</span></li>
1836    
1837     <li>
1838    
1839 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="dab9ec1fa195098f1e7d5e38d441a463"><span class=en-original lang=en>Let <var title="">docs</var> be the <a href=#list-of-relevant-document-objects-to-add>list of relevant
1840     <code>Document</code> objects to add</a> given the <span title="script's global object">global object</span> of the <span title=concept-script>script</span> that invoked the
1841 wakaba 1.111 constructor.</span></p>
1842    
1843     </li>
1844    
1845     <li>
1846    
1847     <p class="no-ja-translation" data-ja-hash="55e64a61fc96598db79195cddb4bb2f9"><span class=en-original lang=en><a href="#add-a-document-to-the-worker's-documents" title="add a document to the worker's documents">Add to
1848     <var title="">worker global scope</var>'s list of <span>the
1849     worker's <code>Document</code>s</span></a> the
1850     <code>Document</code> objects in <var title="">docs</var>.</span></p>
1851    
1852     </li>
1853    
1854     <li>
1855    
1856 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="9a188536e5d8b8e9cc5c77a63925e694"><span class=en-original lang=en>If the <span title="script's global object">global object</span>
1857 wakaba 1.111 of the <span title=concept-script>script</span> that invoked the
1858     constructor is a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object (i.e. we
1859     are creating a nested worker), add <var title="">worker global
1860     scope</var> to the list of <a href="#the-worker's-workers">the worker's workers</a> of the
1861 wakaba 1.205 <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object that is the <span title="script's global object">global object</span> of the <span title=concept-script>script</span> that invoked the
1862 wakaba 1.111 constructor.</span></p>
1863    
1864     </li>
1865    
1866     <li>
1867    
1868 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="6e9455eb4e960dbf8aabe57bcf9064b6"><span class=en-original lang=en><a href=#run-a-worker>Run a worker</a> for the resulting <span>absolute
1869 wakaba 1.205 URL</span>, with the <span>script's browsing context</span> of the
1870 wakaba 1.111 script that invoked the method as the <var title="">owner browsing
1871 wakaba 1.210 context</var>, with the <span>origin</span> of the <span>entry
1872 wakaba 1.191 script</span> as the <var title="">owner origin</var>, and with
1873     <var title="">worker global scope</var> as the global scope.</span></p>
1874 wakaba 1.111
1875     </li>
1876    
1877 wakaba 1.205 </ol><p class="no-ja-translation" data-ja-hash="94265ba37e7269c66945feab30dadb0a"><span class=en-original lang=en>This constructor must be visible when the <span>script's global
1878     object</span> is either a <code>Window</code> object or an object
1879 wakaba 1.124 implementing the <code><a href=#workerutils>WorkerUtils</a></code> interface.</span></p>
1880    
1881    
1882 wakaba 1.201 <h4 id=shared-workers-and-the-sharedworker-interface class="no-ja-translation" data-ja-hash="3b77b75af8223662d0137a2dd84957ab"><span class=en-original lang=en><span class=secno>4.7.3 </span>Shared workers and the <code><a href=#sharedworker>SharedWorker</a></code> interface</span></h4>
1883 wakaba 1.111
1884 wakaba 1.188 <pre class="idl no-ja-translation" data-ja-hash="57ade46d2bc0f3d25861d8bc666cfa38"><span class=en-original lang=en>[<a href=#dom-sharedworker title=dom-SharedWorker>Constructor</a>(in DOMString scriptURL, in optional DOMString name)]
1885 wakaba 1.111 interface <dfn id=sharedworker>SharedWorker</dfn> : <a href=#abstractworker>AbstractWorker</a> {
1886     readonly attribute <span>MessagePort</span> <a href=#dom-sharedworker-port title=dom-SharedWorker-port>port</a>;
1887     };</span></pre>
1888    
1889     <p class="no-ja-translation" data-ja-hash="5cf4affd83f6594d8f8bc1a32f68ab35"><span class=en-original lang=en>The <dfn id=dom-sharedworker-port title=dom-SharedWorker-port><code>port</code></dfn>
1890     attribute must return the value it was assigned by the object's
1891     constructor. It represents the <code>MessagePort</code> for
1892     communicating with the shared worker.</span></p>
1893    
1894     <p class="no-ja-translation" data-ja-hash="a0ab2a2723152011df53c0fc544b493b"><span class=en-original lang=en>When the <dfn id=dom-sharedworker title=dom-SharedWorker><code>SharedWorker(<var title="">scriptURL</var>, <var title="">name</var>)</code></dfn>
1895     constructor is invoked, the user agent must run the following
1896     steps:</span></p>
1897    
1898 wakaba 1.159 <ol><li><p class="has-ja-translation" data-ja-hash="3219e42f1040482201a693e248f580cb"><span class=en-original lang=en><span title="resolve a url">Resolve</span> the <var title="">scriptURL</var> argument.</span><span class=ja-translation lang=ja><var
1899 wakaba 1.111 title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span></li>
1900    
1901     <li><p class="has-ja-translation" data-ja-hash="160444b5a61c1e71f39825a01936237f"><span class=en-original lang=en>If this fails, throw a <code>SYNTAX_ERR</code>
1902     exception.</span><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
1903     例外を投げます。</span></li>
1904    
1905 wakaba 1.168 <li><p class="no-ja-translation" data-ja-hash="a0b3d695bae7e2ce874ab6966d7aa86b"><span class=en-original lang=en>Otherwise, let <var title="">scriptURL</var> be the
1906     resulting <span>absolute URL</span>.</span></li>
1907    
1908 wakaba 1.173 <li><p class="no-ja-translation" data-ja-hash="8a0ad4f3e4cdc7bb4c8643040fc02e97"><span class=en-original lang=en>Let <var title="">name</var> be the value of the second
1909     argument, or the empty string if the second argument was
1910     omitted.</span></li>
1911 wakaba 1.168
1912 wakaba 1.181 <li>
1913    
1914 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="9f29594d6617ebe74034d0cbcc854789"><span class=en-original lang=en>If the <span>origin</span> of <var title="">scriptURL</var> is
1915 wakaba 1.181 not the <span title="same origin">same</span> as the origin of the
1916 wakaba 1.210 <span>entry script</span>, then throw a <code>SECURITY_ERR</code>
1917 wakaba 1.201 exception.</span></p>
1918 wakaba 1.181
1919     <p class="note no-ja-translation" data-ja-hash="70778ef58116d00717c7dad6522d3d5b"><span class=en-original lang=en>Thus, scripts must be external files with the same
1920     scheme as the original page: you can't load a script from a <code title="">data:</code> URL or <code title="">javascript:</code>
1921     URL, and a <code>https:</code> page couldn't start workers using
1922     scripts with <code>http:</code> URLs.</span></p>
1923    
1924     </li>
1925 wakaba 1.111
1926     <li>
1927    
1928 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="dab9ec1fa195098f1e7d5e38d441a463"><span class=en-original lang=en>Let <var title="">docs</var> be the <a href=#list-of-relevant-document-objects-to-add>list of relevant
1929     <code>Document</code> objects to add</a> given the <span title="script's global object">global object</span> of the <span title=concept-script>script</span> that invoked the
1930 wakaba 1.111 constructor.</span></p>
1931    
1932     </li>
1933    
1934     <li>
1935    
1936     <p class="has-ja-translation" data-ja-hash="683a2c0080e014b9eae98b884ccaf7e4"><span class=en-original lang=en>Execute the following substeps atomically:</span><span class=ja-translation lang=ja>次の部分段階群を原子的に実行します。</span></p>
1937    
1938 wakaba 1.159 <ol><li><p class="no-ja-translation" data-ja-hash="b38ef0f6a7b346d45c984332a0b8776d"><span class=en-original lang=en>Create a new <code><a href=#sharedworker>SharedWorker</a></code> object, which will
1939 wakaba 1.111 shortly be associated with a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>
1940     object. Let this <code><a href=#sharedworker>SharedWorker</a></code> object be <var title="">worker</var>.</span></li>
1941    
1942 wakaba 1.205 <li><p class="no-ja-translation" data-ja-hash="a40ab4e22ea2b3e796d21eb952647b7c"><span class=en-original lang=en><span>Create a new <code>MessagePort</code> object</span>
1943     owned by the <span title="script's global object">global
1944     object</span> of the script that invoked the method. Let this be
1945 wakaba 1.111 the <var title="">outside port</var>.</span></li>
1946    
1947     <li><p class="no-ja-translation" data-ja-hash="2945bc791092fa6a9100ef8df34f4c10"><span class=en-original lang=en>Assign <var title="">outside port</var> to the <code title=dom-SharedWorker-port><a href=#dom-sharedworker-port>port</a></code> attribute of <var title="">worker</var>.</span></li>
1948    
1949 wakaba 1.173 <li><p class="no-ja-translation" data-ja-hash="bf1807a565bd680ac1131e8903499e6c"><span class=en-original lang=en>Let <var title="">worker global scope</var> be
1950     null.</span></li>
1951    
1952     <li><p class="no-ja-translation" data-ja-hash="48d19fa2bb17053a97267718abc71c9f"><span class=en-original lang=en>If <var title="">name</var> is not the empty string and
1953     there exists a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object whose
1954     <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag
1955     is false, whose <code title=dom-WorkerGlobalScope-name>name</code> attribute is
1956     exactly equal to <var title="">name</var>, and whose <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
1957     represents an <span>absolute URL</span> with the <span>same
1958     origin</span> as <var title="">scriptURL</var>, then let <var title="">worker global scope</var> be that
1959     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object.</span></li>
1960    
1961     <li><p class="no-ja-translation" data-ja-hash="5f0ebd0b17c71f870fff82e13aa4d49f"><span class=en-original lang=en>Otherwise, if <var title="">name</var> is the empty string
1962     and there exists a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object
1963     whose <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a>
1964     flag is false, and whose <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
1965     is exactly equal to <var title="">scriptURL</var>, then let <var title="">worker global scope</var> be that
1966     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object.</span></li>
1967    
1968 wakaba 1.111 <li>
1969    
1970 wakaba 1.173 <p class="no-ja-translation" data-ja-hash="f49b52bc5df237a2451163ce09a7d8b0"><span class=en-original lang=en>If <var title="">worker global scope</var> is not null, then
1971     run these steps:</span></p>
1972 wakaba 1.111
1973 wakaba 1.173 <ol><li><p class="no-ja-translation" data-ja-hash="c93c344ad574dd1e037e0c9fd4bdbc24"><span class=en-original lang=en>If <var title="">worker global scope</var>'s <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code>
1974 wakaba 1.111 attribute represents an <span>absolute URL</span> that is not
1975 wakaba 1.168 exactly equal to <var title="">scriptURL</var>, then throw a
1976     <code>URL_MISMATCH_ERR</code> exception and abort all these
1977     steps.</span></li>
1978 wakaba 1.111
1979     <li><p class="has-ja-translation" data-ja-hash="9c4f87efaa1e868cd6bf63dbffa749c0"><span class=en-original lang=en>Associate <var title="">worker</var> with <var title="">worker global scope</var>.</span><span class=ja-translation lang=ja><var title="">worker</var> を <var title="">worker
1980     global scope</var> に関連付けます。</span></li>
1981    
1982 wakaba 1.201 <li><p class="no-ja-translation" data-ja-hash="5b7cbe1ac8349480ae8c41d8efaa050a"><span class=en-original lang=en><span>Create a new <code>MessagePort</code>
1983     object</span> owned by <var title="">worker global
1984     scope</var>. Let this be the <var title="">inside
1985     port</var>.</span></li>
1986 wakaba 1.111
1987     <li><p class="no-ja-translation" data-ja-hash="bf2642ced659847cb4402165d2ab3a8e"><span class=en-original lang=en><span>Entangle</span> <var title="">outside port</var>
1988     and <var title="">inside port</var>.</span></li>
1989    
1990     <li><p class="has-ja-translation" data-ja-hash="ebb713e9e29aab450d79b533c42b67ae"><span class=en-original lang=en>Return <var title="">worker</var> and perform the next
1991     step asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、
1992     次の段階を非同期に実行します。</span></li>
1993    
1994     <li><p class="no-ja-translation" data-ja-hash="54fc802e5e886ae34c575b12f00dfb03"><span class=en-original lang=en>Create an event that uses the <code>MessageEvent</code>
1995     interface, with the name <code title=event-connect>connect</code>, which does not bubble, is
1996     not cancelable, has no default action, has a <code title=dom-MessageEvent-data>data</code> attribute whose value
1997     is the empty string and has a <code title=dom-MessageEvent-ports>ports</code> attribute whose
1998     value is an array containing only the newly created port, and
1999     <span>queue a task</span> to dispatch the event at <var title="">worker global scope</var>.</span></li>
2000    
2001     <li>
2002    
2003     <p class="no-ja-translation" data-ja-hash="55e64a61fc96598db79195cddb4bb2f9"><span class=en-original lang=en><a href="#add-a-document-to-the-worker's-documents" title="add a document to the worker's documents">Add to
2004     <var title="">worker global scope</var>'s list of <span>the
2005     worker's <code>Document</code>s</span></a> the
2006     <code>Document</code> objects in <var title="">docs</var>.</span></p>
2007    
2008     </li>
2009    
2010     <li>
2011    
2012 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="2d253ff4e0bff2c52fd5f6b3e8561ce9"><span class=en-original lang=en>If the <span title="script's global object">global
2013     object</span> of the <span title=concept-script>script</span>
2014 wakaba 1.111 that invoked the constructor is a
2015     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, add <var title="">worker global scope</var> to the list of <a href="#the-worker's-workers">the
2016     worker's workers</a> of the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>
2017 wakaba 1.205 object that is the <span title="script's global object">global
2018     object</span> of the <span title=concept-script>script</span>
2019 wakaba 1.111 that invoked the constructor.</span></p>
2020    
2021     </li>
2022    
2023     <li><p class="has-ja-translation" data-ja-hash="dd866391287c967d4799df78a7249911"><span class=en-original lang=en>Abort all these steps.</span><span class=ja-translation lang=ja>これらの段階をすべて停止します。</span></li>
2024    
2025 wakaba 1.159 </ol></li>
2026 wakaba 1.111
2027 wakaba 1.201 <li><p class="no-ja-translation" data-ja-hash="653796a1cbceebf593bdf3b42c13fab4"><span class=en-original lang=en>Create a new <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>
2028     object. Let <var title="">worker global scope</var> be this new
2029     object.</span></li>
2030 wakaba 1.111
2031     <li><p class="has-ja-translation" data-ja-hash="9c4f87efaa1e868cd6bf63dbffa749c0"><span class=en-original lang=en>Associate <var title="">worker</var> with <var title="">worker global scope</var>.</span><span class=ja-translation lang=ja><var title="">worker</var> を <var title="">worker
2032     global scope</var> に関連付けます。</span></li>
2033    
2034     <li><p class="no-ja-translation" data-ja-hash="5197138b23b238d1ca44cd6260532c5d"><span class=en-original lang=en>Set the <code title=dom-SharedWorkerGlobalScope-name><a href=#dom-sharedworkerglobalscope-name>name</a></code> attribute of
2035     <var title="">worker global scope</var> to <var title="">name</var>.</span></li>
2036    
2037 wakaba 1.201 <li><p class="no-ja-translation" data-ja-hash="ae14e6a50adfe4e71fcf797d1d85a932"><span class=en-original lang=en><span>Create a new <code>MessagePort</code> object</span>
2038 wakaba 1.111 owned by <var title="">worker global scope</var>. Let <var title="">inside port</var> be this new object.</span></li>
2039    
2040     <li><p class="no-ja-translation" data-ja-hash="bf2642ced659847cb4402165d2ab3a8e"><span class=en-original lang=en><span>Entangle</span> <var title="">outside port</var> and
2041     <var title="">inside port</var>.</span></li>
2042    
2043 wakaba 1.159 </ol></li>
2044 wakaba 1.111
2045     <li><p class="no-ja-translation" data-ja-hash="8383fd384ab33b4860228f2c27483044"><span class=en-original lang=en>Return <var title="">worker</var> and perform the remaining
2046     steps asynchronously.</span></li>
2047    
2048     <li><p class="no-ja-translation" data-ja-hash="54fc802e5e886ae34c575b12f00dfb03"><span class=en-original lang=en>Create an event that uses the <code>MessageEvent</code>
2049     interface, with the name <code title=event-connect>connect</code>, which does not bubble, is not
2050     cancelable, has no default action, has a <code title=dom-MessageEvent-data>data</code> attribute whose value is
2051     the empty string and has a <code title=dom-MessageEvent-ports>ports</code> attribute whose value
2052     is an array containing only the newly created port, and <span>queue
2053     a task</span> to dispatch the event at <var title="">worker global
2054     scope</var>.</span></li>
2055    
2056     <li>
2057    
2058     <p class="no-ja-translation" data-ja-hash="55e64a61fc96598db79195cddb4bb2f9"><span class=en-original lang=en><a href="#add-a-document-to-the-worker's-documents" title="add a document to the worker's documents">Add to
2059     <var title="">worker global scope</var>'s list of <span>the
2060     worker's <code>Document</code>s</span></a> the
2061     <code>Document</code> objects in <var title="">docs</var>.</span></p>
2062    
2063     </li>
2064    
2065     <li>
2066    
2067 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="2d253ff4e0bff2c52fd5f6b3e8561ce9"><span class=en-original lang=en>If the <span title="script's global object">global object</span>
2068 wakaba 1.111 of the <span title=concept-script>script</span> that invoked the
2069     constructor is a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, add <var title="">worker global scope</var> to the list of <a href="#the-worker's-workers">the
2070     worker's workers</a> of the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>
2071 wakaba 1.205 object that is the <span title="script's global object">global
2072     object</span> of the <span title=concept-script>script</span>
2073 wakaba 1.111 that invoked the constructor.</span></p>
2074    
2075     </li>
2076    
2077     <li>
2078    
2079 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="562ded8637462848f5c508963ab5eeb4"><span class=en-original lang=en><a href=#run-a-worker>Run a worker</a> for <var title="">scriptURL</var>,
2080 wakaba 1.205 with the <span>script's browsing context</span> of the script that
2081 wakaba 1.168 invoked the method as the <var title="">owner browsing
2082 wakaba 1.210 context</var>, with the <span>origin</span> of the <span>entry
2083 wakaba 1.191 script</span> as the <var title="">owner origin</var>, and with
2084     <var title="">worker global scope</var> as the global scope.</span></p>
2085 wakaba 1.111
2086     </li>
2087    
2088 wakaba 1.205 </ol><p class="no-ja-translation" data-ja-hash="94265ba37e7269c66945feab30dadb0a"><span class=en-original lang=en>This constructor must be visible when the <span>script's global
2089     object</span> is either a <code>Window</code> object or an object
2090 wakaba 1.124 implementing the <code><a href=#workerutils>WorkerUtils</a></code> interface.</span></p>
2091 wakaba 1.133
2092     <p class="no-ja-translation" data-ja-hash="232ca3945fb57a3baa9cc0675ff99caa"><span class=en-original lang=en>The <span>task source</span> for the tasks mentioned above is the
2093     <span>DOM manipulation task source</span>.</span></p>
2094 wakaba 1.124
2095    
2096    
2097 wakaba 1.139 <h2 id=apis-available-to-workers class="has-ja-translation" data-ja-hash="4fce100e6a2eccbb2df8631a438feeb6"><span class=en-original lang=en><span class=secno>5 </span>APIs available to workers</span><span class=ja-translation lang=ja><span class=secno>5 </span>労働者が利用可能な API</span></h2>
2098 wakaba 1.111
2099 wakaba 1.208 <pre class="idl no-ja-translation" data-ja-hash="30d32a60b3b93cd3d0c6a32d9338b2ee"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
2100 wakaba 1.154 interface <dfn id=workerutils>WorkerUtils</dfn> {
2101     void <a href=#dom-workerglobalscope-importscripts title=dom-WorkerGlobalScope-importScripts>importScripts</a>(in DOMString... urls);
2102 wakaba 1.208 readonly attribute <a href=#workernavigator>WorkerNavigator</a> <a href=#dom-worker-navigator title=dom-worker-navigator>navigator</a>;
2103 wakaba 1.154 };
2104 wakaba 1.201 <a href=#workerutils>WorkerUtils</a> implements <span>WindowTimers</span>;</span></pre>
2105 wakaba 1.111
2106 wakaba 1.184 <p class="has-ja-translation" data-ja-hash="59b28734296c1cd390d156b0e8e5fb94"><span class=en-original lang=en>The DOM APIs (<code>Node</code> objects, <code>Document</code>
2107 wakaba 1.111 objects, etc) are not available to workers in this version of this
2108     specification.</span><span class=ja-translation lang=ja>DOM API (<code>Node</code> オブジェクト、 <code>Document</code>
2109     オブジェクト、その他) は、この版のこの仕様書では労働者に利用可能ではありません。</span></p>
2110    
2111    
2112 wakaba 1.139 <h3 id=importing-scripts-and-libraries class="has-ja-translation" data-ja-hash="e7522d998689dc52be80feeff81470ca"><span class=en-original lang=en><span class=secno>5.1 </span>Importing scripts and libraries</span><span class=ja-translation lang=ja><span class=secno>5.1 </span>スクリプトとライブラリーの輸入</span></h3>
2113 wakaba 1.111
2114     <p class="no-ja-translation" data-ja-hash="66975403bb279c95f3527e7070d78341"><span class=en-original lang=en>When a script invokes the <dfn id=dom-workerglobalscope-importscripts title=dom-WorkerGlobalScope-importScripts><code>importScripts(<var title="">urls</var>)</code></dfn> method on a
2115     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, the user agent must run the
2116     following steps:</span></p>
2117    
2118 wakaba 1.159 <ol><li><p class="has-ja-translation" data-ja-hash="143a8bb07f4501807d2bbf2d2d2b345a"><span class=en-original lang=en>If there are no arguments, return without doing
2119 wakaba 1.111 anything. Abort these steps.</span><span class=ja-translation lang=ja>引数がない場合、何も返さずに返ります。
2120     これらの段階を停止します。</span></li>
2121    
2122     <li><p class="has-ja-translation" data-ja-hash="b89818b453add85fbb5ec1e963e3072c"><span class=en-original lang=en><span title="resolve a url">Resolve</span> each
2123     argument.</span><span class=ja-translation lang=ja>各引数を<span title="resolve a url">解決</span>します。</span></li>
2124    
2125     <li><p class="has-ja-translation" data-ja-hash="54adea3a3a07dd8833ad87eb937142f1"><span class=en-original lang=en>If any fail, throw a <code>SYNTAX_ERR</code>
2126     exception.</span><span class=ja-translation lang=ja>いずれかが失敗した場合、 <code>SYNTAX_ERR</code> 例外を投げます。</span></li>
2127    
2128     <!--
2129 wakaba 1.201 <li><p class="no-ja-translation" data-ja-hash="3f4c7fcccf773ea7c33a97ca9820c400"><span class=en-original lang=en>If any of the resulting <span title="absolute URL">absolute
2130 wakaba 1.111 URLs</span> have an <span>origin</span> that is not the <span
2131     title="same origin">same</span> as the origin of the script that
2132 wakaba 1.201 invoked the method, then throw a <code>SECURITY_ERR</code>
2133     exception.</span></p></li>
2134 wakaba 1.111 -->
2135    
2136     <li>
2137    
2138 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="084a0643b126c576729e78d91bb57531"><span class=en-original lang=en>Attempt to <span>fetch</span> each resource identified by the
2139 wakaba 1.205 resulting <span title="absolute URL">absolute URLs</span>, from
2140 wakaba 1.210 the <span>entry script</span>'s <span>origin</span>.</span></p> <!-- not
2141 wakaba 1.191 http-origin privacy sensitive -->
2142 wakaba 1.111
2143     </li>
2144    
2145     <li>
2146    
2147     <p class="has-ja-translation" data-ja-hash="4fc5f1898eb20e4c8da603b91c1ae884"><span class=en-original lang=en>For each argument in turn, in the order given, starting with
2148     the first one, run these substeps:</span><span class=ja-translation lang=ja>各引数について、与えられた順に最初のものから、次の部分段階群を走らせます。</span></p>
2149    
2150 wakaba 1.159 <ol><li>
2151 wakaba 1.111
2152     <p class="has-ja-translation" data-ja-hash="a5cd8fb5d75985afdc62f7ac228329d4"><span class=en-original lang=en>Wait for the fetching attempt for the corresponding resource
2153     to complete.</span><span class=ja-translation lang=ja>対応する資源を取得しようとする試みが完了するのを待ちます。</span></p>
2154    
2155     <p class="no-ja-translation" data-ja-hash="c821b5a32a4316df06e95e2117d4d21a"><span class=en-original lang=en>If the fetching attempt failed, throw a
2156     <code>NETWORK_ERR</code> exception and abort all these
2157     steps.</span></p>
2158    
2159 wakaba 1.201 <p class="no-ja-translation" data-ja-hash="f1667590dddc3f064bc292826b67f086"><span class=en-original lang=en>If the attempt succeeds, then convert the script resource to
2160     Unicode by assuming it was encoded as UTF-8, to obtain its <var title="">source</var>.</span></p>
2161 wakaba 1.111
2162     <p class="no-ja-translation" data-ja-hash="c880bce97c5a1aadccd8989fc4ec8551"><span class=en-original lang=en>Let <var title="">language</var> be JavaScript.</span></p>
2163    
2164     <p class="note has-ja-translation" data-ja-hash="9d495d7b0fa2439cfa3470c4af977171"><span class=en-original lang=en>As with the worker's script, the script here is
2165     always assumed to be JavaScript, regardless of the MIME
2166     type.</span><span class=ja-translation lang=ja>労働者のスクリプトと同じく、ここでのスクリプトも、 MIME 型に関わらず常に
2167 wakaba 1.183 JavaScript であるとみなします。</span></p>
2168 wakaba 1.111
2169     </li>
2170    
2171     <li>
2172    
2173 wakaba 1.203 <p class="no-ja-translation" data-ja-hash="179ad45b4312a1c3d9dc05a48b1d17a6"><span class=en-original lang=en><span>Create a script</span>, using <var title="">source</var> as the script source and <var title="">language</var> as the scripting language, using the
2174     same global object, browsing context, URL character encoding,
2175     base URL, and script group as the <span title=concept-script>script</span> that was created by the
2176 wakaba 1.111 worker's <a href=#run-a-worker>run a worker</a> algorithm.</span></p>
2177    
2178     <p class="no-ja-translation" data-ja-hash="160451bccc2829032bdfb4597231e9c2"><span class=en-original lang=en>Let the newly created <span title=concept-script>script</span> run until it either
2179     returns, fails to parse, fails to catch an exception, or gets
2180     prematurely aborted by the "<a href=#kill-a-worker>kill a worker</a>" or
2181     "<a href=#terminate-a-worker>terminate a worker</a>" algorithms defined above.</span></p>
2182    
2183 wakaba 1.207 <p class="no-ja-translation" data-ja-hash="af201997a3ef245c7e267b8f6206d3a2"><span class=en-original lang=en>If it failed to parse, then throw an ECMAScript
2184     <code>SyntaxError</code> exception and abort all these
2185     steps. <a href=#refsECMA262>[ECMA262]</a></span></p>
2186 wakaba 1.111
2187     <p class="no-ja-translation" data-ja-hash="32f753089621a99745d3a6dde7c5aa8b"><span class=en-original lang=en>If an exception was raised or if the script was prematurely
2188     aborted, then abort all these steps, letting the exception or
2189     aborting continue to be processed by the script that called the
2190     <code title=dom-WorkerGlobalScope-importScripts><a href=#dom-workerglobalscope-importscripts>importScripts()</a></code>
2191     method.</span></p>
2192    
2193     <p class="no-ja-translation" data-ja-hash="f41de43eedf5733455078779b5f50c14"><span class=en-original lang=en>If the "<a href=#kill-a-worker>kill a worker</a>" or "<a href=#terminate-a-worker>terminate a
2194     worker</a>" algorithms abort the script then abort all these
2195     steps.</span></p>
2196    
2197     </li>
2198    
2199 wakaba 1.159 </ol></li>
2200 wakaba 1.156
2201 wakaba 1.208 </ol><h3 id=the-workernavigator-object class="no-ja-translation" data-ja-hash="598e5eccb0b57894677b8fa67d4368c6"><span class=en-original lang=en><span class=secno>5.2 </span>The <code><a href=#workernavigator>WorkerNavigator</a></code> object</span></h3>
2202 wakaba 1.111
2203 wakaba 1.208 <p class="no-ja-translation" data-ja-hash="c7055d2e97a36583e792723acbe528ed"><span class=en-original lang=en>The <dfn id=dom-worker-navigator title=dom-worker-navigator><code>navigator</code></dfn> attribute
2204 wakaba 1.111 of the <code><a href=#workerutils>WorkerUtils</a></code> interface must return an instance of
2205 wakaba 1.208 the <code><a href=#workernavigator>WorkerNavigator</a></code> interface, which represents the
2206     identity and state of the user agent (the client):</span></p>
2207    
2208     <pre class="idl no-ja-translation" data-ja-hash="5bd0c913346992443814f8f9af6a487a"><span class=en-original lang=en>interface <dfn id=workernavigator>WorkerNavigator</dfn> {};
2209     <a href=#workernavigator>WorkerNavigator</a> implements <span>NavigatorID</span>;
2210     <a href=#workernavigator>WorkerNavigator</a> implements <span>NavigatorOnLine</span>;</span></pre>
2211    
2212     <p class="no-ja-translation" data-ja-hash="29e4a02dcad6b0f039ad77e635f7d5bd"><span class=en-original lang=en>Objects implementing the <code><a href=#workernavigator>WorkerNavigator</a></code> interface
2213     also implement the <code>NavigatorID</code> and
2214     <code>NavigatorOnLine</code> interfaces.
2215 wakaba 1.207
2216     <a href=#refsHTML5>[HTML5]</a>
2217    
2218     </span></p>
2219 wakaba 1.111
2220 wakaba 1.208 <p class="no-ja-translation" data-ja-hash="7329ca0ae9fe31ac47218d7ac49a48cf"><span class=en-original lang=en>This <code><a href=#workernavigator>WorkerNavigator</a></code> interface must not exist if the
2221     interface's <span>relevant namespace object</span> is a
2222     <code>Window</code> object. <a href=#refsWEBIDL>[WEBIDL]</a></span></p>
2223 wakaba 1.111
2224    
2225    
2226 wakaba 1.139 <h3 id=apis-defined-in-other-specifications class="has-ja-translation" data-ja-hash="d6d6885373ce92bfa8857f5a375a9c8f"><span class=en-original lang=en><span class=secno>5.3 </span>APIs defined in other specifications</span><span class=ja-translation lang=ja><span class=secno>5.3 </span>他の仕様書で定義されている API</span></h3>
2227 wakaba 1.111
2228 wakaba 1.207 <p class="no-ja-translation" data-ja-hash="7a38b8c533febc1df242595b4de0113d"><span class=en-original lang=en>The <code title=dom-opendatabase>openDatabase()</code> and
2229 wakaba 1.111 <code title=dom-opendatabase-sync>openDatabaseSync()</code>
2230 wakaba 1.207 methods are defined in the Web SQL Database specification. <a href=#refsWEBSQL>[WEBSQL]</a></span></p>
2231 wakaba 1.111
2232    
2233    
2234 wakaba 1.139 <h3 id=interface-objects-and-constructors class="has-ja-translation" data-ja-hash="78e75b89c304218ef77a66cd9efdf398"><span class=en-original lang=en><span class=secno>5.4 </span>Interface objects and constructors</span><span class=ja-translation lang=ja><span class=secno>5.4 </span>界面オブジェクトと構築器</span></h3>
2235 wakaba 1.111
2236 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="be8e99febe2a5427ef9832c85c13da0e"><span class=en-original lang=en>There must be no interface objects and constructors available in
2237     the global scope of scripts whose <span>script's global
2238     object</span> is a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object except for
2239 wakaba 1.111 the following:</span></p>
2240    
2241 wakaba 1.170 <ul><li><p class="no-ja-translation" data-ja-hash="a8f4727ef88dc7955f089bfa420d3c65"><span class=en-original lang=en><code>XMLHttpRequest</code> and all interface objects and
2242 wakaba 1.111 constructors defined by the XMLHttpRequest specifications, except
2243     that the <span>document response entity body</span> must always be
2244 wakaba 1.170 null. The <span><code>XMLHttpRequest</code> base URL</span> is the
2245     <span>script's base URL</span>; the
2246     <span><code>XMLHttpRequest</code> origin</span> is the script's
2247     <span>origin</span>. <a href=#refsXHR>[XHR]</a></span></li>
2248 wakaba 1.111
2249 wakaba 1.207 <li><p class="no-ja-translation" data-ja-hash="84d1d0bbb1868e6785d0557b217c792a"><span class=en-original lang=en>The interface objects and constructors defined by this
2250     specification.</span></li>
2251 wakaba 1.111
2252 wakaba 1.207 <li><p class="no-ja-translation" data-ja-hash="16842d6b927b98a5c14e320045f6a03c"><span class=en-original lang=en>Constructors defined by specifications that explicitly say
2253     that they should be visible when the <span>script's global
2254     object</span> is a <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code>, a
2255     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>, or an object implementing the
2256     <code><a href=#workerutils>WorkerUtils</a></code> interface; the interfaces of any objects
2257     with such constructors; and the interfaces of any objects made
2258     accessible through APIs exposed by those constructors or made
2259     accessible through interfaces to be implemented by any objects that
2260     are themselves accessible to scripts whose <span>script's global
2261     object</span> implements the <code><a href=#workerutils>WorkerUtils</a></code>
2262     interface.</span></li>
2263    
2264     </ul><p class="note no-ja-translation" data-ja-hash="f1fa4c80358ffead3b2abc663c92d283"><span class=en-original lang=en>These requirements do not override the requirements
2265     defined by the Web IDL specification, in particular concerning the
2266     visibility of interfaces annotated with the <code title="">[NoInterfaceObject]</code> extended attribute.</span></p>
2267 wakaba 1.111
2268    
2269 wakaba 1.207 <h3 id=worker-locations class="has-ja-translation" data-ja-hash="ae4aa0f882fcbd2ee8252e59113ec205"><span class=en-original lang=en><span class=secno>5.5 </span>Worker locations</span><span class=ja-translation lang=ja><span class=secno>5.5 </span>労働者の所在</span></h3>
2270 wakaba 1.111
2271     <pre class="idl no-ja-translation" data-ja-hash="8d12e26ffacf32cd9d10364c0255ab53"><span class=en-original lang=en>interface <dfn id=workerlocation>WorkerLocation</dfn> {
2272     readonly attribute DOMString <a href=#dom-workerlocation-href title=dom-WorkerLocation-href>href</a>;
2273     readonly attribute DOMString <a href=#dom-workerlocation-protocol title=dom-WorkerLocation-protocol>protocol</a>;
2274     readonly attribute DOMString <a href=#dom-workerlocation-host title=dom-WorkerLocation-host>host</a>;
2275     readonly attribute DOMString <a href=#dom-workerlocation-hostname title=dom-WorkerLocation-hostname>hostname</a>;
2276     readonly attribute DOMString <a href=#dom-workerlocation-port title=dom-WorkerLocation-port>port</a>;
2277     readonly attribute DOMString <a href=#dom-workerlocation-pathname title=dom-WorkerLocation-pathname>pathname</a>;
2278     readonly attribute DOMString <a href=#dom-workerlocation-search title=dom-WorkerLocation-search>search</a>;
2279     readonly attribute DOMString <a href=#dom-workerlocation-hash title=dom-WorkerLocation-hash>hash</a>;
2280     };</span></pre>
2281    
2282     <p class="no-ja-translation" data-ja-hash="0875217b900933e0434228878aa70bb1"><span class=en-original lang=en>A <code><a href=#workerlocation>WorkerLocation</a></code> object represents an <span>absolute
2283     URL</span> set at its creation.</span></p>
2284    
2285     <p class="no-ja-translation" data-ja-hash="12d68ceea5131e0a3f4acc5b2060ee25"><span class=en-original lang=en>The <dfn id=dom-workerlocation-href title=dom-WorkerLocation-href><code>href</code></dfn>
2286     attribute must return the <span>absolute URL</span> that the object
2287     represents.</span></p>
2288    
2289 wakaba 1.172 <p class="no-ja-translation" data-ja-hash="911e900b0ce6080a962f5d5c782239d4"><span class=en-original lang=en>The <code><a href=#workerlocation>WorkerLocation</a></code> interface also has the complement
2290     of <span>URL decomposition IDL attributes</span>, <dfn id=dom-workerlocation-protocol title=dom-WorkerLocation-protocol><code>protocol</code></dfn>,
2291 wakaba 1.111 <dfn id=dom-workerlocation-host title=dom-WorkerLocation-host><code>host</code></dfn>, <dfn id=dom-workerlocation-port title=dom-WorkerLocation-port><code>port</code></dfn>, <dfn id=dom-workerlocation-hostname title=dom-WorkerLocation-hostname><code>hostname</code></dfn>,
2292     <dfn id=dom-workerlocation-pathname title=dom-WorkerLocation-pathname><code>pathname</code></dfn>,
2293     <dfn id=dom-workerlocation-search title=dom-WorkerLocation-search><code>search</code></dfn>,
2294     and <dfn id=dom-workerlocation-hash title=dom-WorkerLocation-hash><code>hash</code></dfn>. These must
2295 wakaba 1.172 follow the rules given for URL decomposition IDL attributes, with the
2296 wakaba 1.111 <span title=concept-uda-input>input</span> being the
2297     <span>absolute URL</span> that the object represents (same as the
2298     <code title=dom-WorkerLocation-href><a href=#dom-workerlocation-href>href</a></code> attribute), and
2299     the <span title=concept-uda-setter>common setter action</span>
2300 wakaba 1.207 being a no-op, since the attributes are defined to be readonly.
2301    
2302     <a href=#refsHTML5>[HTML5]</a>
2303    
2304     </span></p>
2305 wakaba 1.208
2306     <p class="no-ja-translation" data-ja-hash="aec7b7de7c3e78e1e158f6819d00fe0e"><span class=en-original lang=en>The <code><a href=#workerlocation>WorkerLocation</a></code> interface must not exist if the
2307     interface's <span>relevant namespace object</span> is a
2308     <code>Window</code> object. <a href=#refsWEBIDL>[WEBIDL]</a></span></p>
2309    
2310 wakaba 1.176
2311 wakaba 1.213
2312 wakaba 1.111
2313 wakaba 1.163 <h2 class="no-num has-ja-translation" data-ja-hash="d95867deadfe690e40f42068d6b59df8" id=references><span class=en-original lang=en>References</span><span class=ja-translation lang=ja>参照</span></h2><!--REFS-->
2314 wakaba 1.111
2315 wakaba 1.157 <p class="no-ja-translation" data-ja-hash="753b3f31f2391081a7d0512d99c97790"><span class=en-original lang=en>All references are normative unless marked "Non-normative".</span></p>
2316    
2317 wakaba 1.213 <!-- XXX really should remove dates and version numbers from these references once and for all -->
2318 wakaba 1.211
2319 wakaba 1.159 <dl><dt id=refsDOMCORE class="no-ja-translation" data-ja-hash="bc16cdf6ab9118cf4065dd05b4725405"><span class=en-original lang=en>[DOMCORE]</span></dt>
2320 wakaba 1.158 <dd class="no-ja-translation" data-ja-hash="7fc13e52bc2a6201412c03a4c373ccf3"><span class=en-original lang=en><cite><a href=http://www.w3.org/TR/DOM-Level-3-Core/>Document
2321     Object Model (DOM) Level 3 Core Specification</a></cite>, A. Le
2322     Hors, P. Le Hegaret, L. Wood, G. Nicol, J. Robie, M. Champion,
2323     S. Byrnes. W3C, April 2004.</span></dd>
2324     <!--
2325     <dd class="no-ja-translation" data-ja-hash="e06e3d48fc44cb5377f215903eac8c64"><span class=en-original lang=en><cite><a href="http://simon.html5.org/specs/web-dom-core">Web
2326     DOM Core</a></cite>, S. Pieters. W3C, June 2009.</span></dd>
2327     -->
2328    
2329 wakaba 1.157 <dt id=refsDOMEVENTS class="no-ja-translation" data-ja-hash="4acfe87f4af565e925ab2c05d359f9b1"><span class=en-original lang=en>[DOMEVENTS]</span></dt>
2330     <!--
2331     <dd class="no-ja-translation" data-ja-hash="fa7c84f91358fa9f83f95423f9d0c22a"><span class=en-original lang=en><cite><a
2332     href="http://www.w3.org/TR/DOM-Level-3-Events/">Document Object
2333     Model (DOM) Level 3 Events Specification</a></cite>,
2334     B. H&ouml;hrmann, P. Le Hegaret, T. Pixley. W3C, December
2335     2007.</span></dd>
2336     -->
2337     <dd class="no-ja-translation" data-ja-hash="be06d912f9b000a6d47674b7ff3b65d5"><span class=en-original lang=en><cite><a href=http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html>Document
2338     Object Model (DOM) Level 3 Events Specification</a></cite>,
2339     D. Schepers. W3C, July 2009.</span></dd>
2340    
2341     <dt id=refsECMA262 class="no-ja-translation" data-ja-hash="ef033ad77bafa67936e26b8da6095aed"><span class=en-original lang=en>[ECMA262]</span></dt>
2342     <dd class="no-ja-translation" data-ja-hash="98a50a41a8dd161cc16a826da0377562"><span class=en-original lang=en><cite><a href=http://www.ecma-international.org/publications/standards/Ecma-262.htm>ECMAScript
2343     Language Specification</a></cite>. ECMA, December 1999.</span></dd>
2344    
2345     <dt id=refsHTML5 class="no-ja-translation" data-ja-hash="c8334fcd95059386411d0d14d5bdbeab"><span class=en-original lang=en>[HTML5]</span></dt>
2346 wakaba 1.171 <dd class="no-ja-translation" data-ja-hash="6e52796fd453c105fc2d2a18e6ce549a"><span class=en-original lang=en><cite><a href=http://www.whatwg.org/specs/web-apps/current-work/>HTML5</a></cite>,
2347     I. Hickson. WHATWG, August 2009.</span></dd>
2348 wakaba 1.157
2349 wakaba 1.158 <dt id=refsRFC2119 class="no-ja-translation" data-ja-hash="160a6b695c5227ccd5c7beb0e6d5ec22"><span class=en-original lang=en>[RFC2119]</span></dt>
2350     <dd class="no-ja-translation" data-ja-hash="6ae46a2eda05406ae93aa57e2c1d3ac4"><span class=en-original lang=en><cite><a href=http://www.ietf.org/rfc/rfc2119.txt>Key words for use in
2351     RFCs to Indicate Requirement Levels</a></cite>, S. Bradner. IETF, March
2352     1997.</span></dd>
2353    
2354 wakaba 1.207 <dt id=refsWEBSQL class="no-ja-translation" data-ja-hash="691e93badc6912ec8c4f60bfd9d7cef9"><span class=en-original lang=en>[WEBSQL]</span></dt>
2355     <dd class="no-ja-translation" data-ja-hash="0156df1ea73258c964994795cff79a24"><span class=en-original lang=en><cite><a href=http://dev.w3.org/html5/webdatabase/>Web SQL
2356     Database</a></cite>, I. Hickson. W3C, July 2009.</span></dd>
2357 wakaba 1.158
2358     <dt id=refsWEBIDL class="no-ja-translation" data-ja-hash="c36d8342bfa57c496487e73bea1fb4d2"><span class=en-original lang=en>[WEBIDL]</span></dt>
2359     <!--
2360     <dd class="no-ja-translation" data-ja-hash="abfc3d3081264da39586fa27500c0735"><span class=en-original lang=en><cite><a href="http://www.w3.org/TR/WebIDL/">Web
2361     IDL</a></cite>, C. McCormack. W3C, December 2008.</span></dd>
2362     -->
2363     <dd class="no-ja-translation" data-ja-hash="c6e22f55f1fdbf826fd96ab00d2e89ce"><span class=en-original lang=en><cite><a href=http://dev.w3.org/2006/webapi/WebIDL/>Web
2364     IDL</a></cite>, C. McCormack. W3C, July 2009.</span></dd>
2365 wakaba 1.157
2366     <dt id=refsXHR class="no-ja-translation" data-ja-hash="3ba5cbb19a05fab102ccbee69603b1fc"><span class=en-original lang=en>[XHR]</span></dt>
2367     <!--
2368     <dd class="no-ja-translation" data-ja-hash="33fc4916633611a40e016c3e784b1522"><span class=en-original lang=en><cite><a href="http://www.w3.org/TR/XMLHttpRequest/">The XMLHttpRequest
2369     Object</a></cite>, A. van Kesteren. W3C, April
2370     2008.</span></dd>
2371     -->
2372 wakaba 1.170 <dd class="no-ja-translation" data-ja-hash="e5be364ffb4ddc867033669399b0ee1d"><span class=en-original lang=en><cite><a href=http://dev.w3.org/2006/webapi/XMLHttpRequest-2/><code>XMLHttpRequest</code></a></cite>,
2373 wakaba 1.157 A. van Kesteren. W3C, June 2009.</span></dd>
2374    
2375 wakaba 1.213 </dl><h2 class="no-num has-ja-translation" data-ja-hash="0407c27180c9b019e644e8ad4c6a9324" id=acknowledgements><span class=en-original lang=en>Acknowledgements</span><span class=ja-translation lang=ja>謝辞</span></h2> <!-- ACKS -->
2376 wakaba 1.111
2377 wakaba 1.159 <p class="has-ja-translation" data-ja-hash="a17a0feb6f58a31040d51121e80bc233" data-ja-real-hash="f59286e011a68a30c6514aae2845f151"><span class=en-original lang=en>Thanks to
2378 wakaba 1.111
2379     Aaron Boodman,
2380 wakaba 1.159 &#1040;&#1083;&#1077;&#1082;&#1089;&#1077;&#1081; &#1055;&#1088;&#1086;&#1089;&#1082;&#1091;&#1088;&#1103;&#1082;&#1086;&#1074; (Alexey Proskuryakov),
2381 wakaba 1.111 Anne van Kesteren,
2382     Ben Turner,
2383     Dmitry Titov,
2384     Drew Wilson,
2385     Jeremy Orlow,
2386     Jonas Sicking,
2387     Justin James,
2388     Kevin Hakanson,
2389     Maciej Stachowiak,
2390     Michael Nordman,
2391     Mike Smith,
2392    
2393     and
2394    
2395     Philip Taylor
2396    
2397 wakaba 1.159 for their useful and substantial comments.</span><span class=ja-translation lang=ja>Aaron Boodman, &#1040;&#1083;&#1077;&#1082;&#1089;&#1077;&#1081; &#1055;&#1088;&#1086;&#1089;&#1082;&#1091;&#1088;&#1103;&#1082;&#1086;&#1074; (Alexey Proskuryakov), Anne van Kesteren, Ben Turner, Dmitry Titov, Drew Wilson, Jeremy Orlow, Jonas Sicking, Justin James, Kevin Hakanson, Maciej Stachowiak, Michael Nordman, Mike Smith, Philip Taylor の有用かつ重要なコメントに感謝します。</span></p>
2398 wakaba 1.111
2399     <p class="has-ja-translation" data-ja-hash="7c6875278ecf56df193c33c553856fac"><span class=en-original lang=en>Huge thanks to the whole Gears team, who pioneered this
2400     technology and whose experience has been a huge influence on this
2401     specification.</span><span class=ja-translation lang=ja>Gears チームの方々にも非常に感謝します。
2402     Gears チームの方々はこの技術を開拓し、その経験はこの仕様書にも多大な影響を与えています。
2403     </span></p>
2404    
2405    

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24