/[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.196 - (hide annotations) (download)
Tue Oct 6 06:17:39 2009 UTC (16 years, 9 months ago) by wakaba
Branch: MAIN
Changes since 1.195: +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.159 <script src=ja-script defer async></script><link href=http://www.whatwg.org/images/icon rel=icon><body class=draft>
6 wakaba 1.111 <div class=head>
7     <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     src=http://www.whatwg.org/images/logo></a></span></p>
9     <h1 class="no-ja-translation" data-ja-hash="6cb7eb9696d986359fa3a78c4b8e60dc"><span class=en-original lang=en>Web Workers</span></h1>
10 wakaba 1.196 <h2 class="no-num no-toc has-ja-translation" data-ja-hash="59c165703ab81d9eb9d716b2135e1387" data-ja-real-hash="536260c38ef684f7dd8d13ae4b6d45bd" id=draft-recommendation-&mdash;-6-october-2009><span class=en-original lang=en>Draft Recommendation &mdash; 6 October 2009</span><span class=ja-translation lang=ja>勧告案<ins class=ja-note>の非公式和訳</ins> &mdash;
11     <ins class=ja-note>(原文出版日)</ins> 2009年10月6日</span></h2>
12 wakaba 1.111 <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     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     </div>
67    
68 wakaba 1.159 <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>
69 wakaba 1.111
70     <p class="has-ja-translation" data-ja-hash="a4f61aa99f0d87d5d87b6e07071a74da"><span class=en-original lang=en>This specification defines an API that allows Web application
71     authors to spawn background workers running scripts in parallel to
72     their main page. This allows for thread-like operation with
73     message-passing as the coordination mechanism.</span><span class=ja-translation lang=ja>この仕様書は、 Web アプリケーションで、主たる頁とは並列に、
74     背景労働者スクリプトを走らせるための API を定義します。
75     これにより、メッセージ・パッシングによるスレッド的操作を協調機構として利用できるようになります。</span></p>
76    
77    
78     <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>
79    
80     <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
81     changing on a daily if not hourly basis in response to comments and
82     as a general part of its development process. Comments are very
83     welcome, please send them to <a href=mailto:[email protected]>[email protected]</a>. Thank
84     you.</span><span class=ja-translation lang=ja><strong>この文書は作業中です!</strong>
85     この文書は、コメントへの対応や通常の開発の過程として、
86     毎時毎分とは言い過ぎですが毎日のペースで変更されています。
87     コメントは非常に歓迎していますので、
88     <a href=mailto:[email protected]>[email protected]</a>
89     へお送りください。よろしくお願いします。</span></p>
90    
91     <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>
92    
93     <p class="has-ja-translation" data-ja-hash="f0a0e89202a0b75b7cf2314905ae258d"><span class=en-original lang=en>Implementors should be aware that this specification is not
94     stable. <strong>Implementors who are not taking part in the
95     discussions are likely to find the specification changing out from
96     under them in incompatible ways.</strong> Vendors interested in
97     implementing this specification before it eventually reaches the
98     call for implementations should join the <a href=/mailing-list>WHATWG mailing list</a> and take part in the
99     discussions.</span><span class=ja-translation lang=ja>実装者は、この仕様書が安定していないことに注意するべきです。
100     <strong>実装者は議論に参加しておかないと、
101     仕様がその実装とは非互換に変更されてしまうかもしれません。</strong>
102     この仕様書がいずれ実装呼び掛けの段階に達するのよりも前にこの仕様を実装したい販売者は、
103     <a href=http://www.whatwg.org/mailing-list>WHATWG メイリング・リスト</a>に参加し、
104     議論に加わるべきです。</span></p>
105    
106     <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
107     specifications are identical from the table of contents onwards.</span></p>
108    
109     <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.139 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="1e7058220085c30c6bb2a12a3c89679e"><span class=en-original lang=en><a href=#decoding-scripts><span class=secno>4.3 </span>Decoding scripts</a></span></li>
138     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="e2bf69c265f0577e8eda8540795eac46"><span class=en-original lang=en><a href=#the-event-loop><span class=secno>4.4 </span>The event loop</a></span></li>
139     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="2b43c40d7feeeee8ea12fd0c23d99809"><span class=en-original lang=en><a href="#the-worker's-lifetime"><span class=secno>4.5 </span>The worker's lifetime</a></span></li>
140     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="5446f38a420881f029c7a587e3b49523"><span class=en-original lang=en><a href=#processing-model><span class=secno>4.6 </span>Processing model</a></span></li>
141     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="d8bba28047e39857c758bfb25576078e"><span class=en-original lang=en><a href=#runtime-script-errors><span class=secno>4.7 </span>Runtime script errors</a></span></li>
142     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="e415bb73deb1eb37d58b2c426c2891bf"><span class=en-original lang=en><a href=#creating-workers><span class=secno>4.8 </span>Creating workers</a>
143 wakaba 1.111 </span><ol>
144 wakaba 1.139 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="fd7fce5cf761f81e7ccde31c886c4e88"><span class=en-original lang=en><a href=#the-abstractworker-abstract-interface><span class=secno>4.8.1 </span>The <code>AbstractWorker</code> abstract interface</a></span></li>
145     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="174a24e7617617691c1fea0de7a19411"><span class=en-original lang=en><a href=#dedicated-workers-and-the-worker-interface><span class=secno>4.8.2 </span>Dedicated workers and the <code>Worker</code> interface</a></span></li>
146     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="4ffcaeb7e6840a21cd2cce4bda60ecdd"><span class=en-original lang=en><a href=#shared-workers-and-the-sharedworker-interface><span class=secno>4.8.3 </span>Shared workers and the <code>SharedWorker</code> interface</a></span></ol></ol></li>
147     <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>
148 wakaba 1.111 </span><ol>
149 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>
150     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="91054561db04b2213a3534dc54ef2c3b"><span class=en-original lang=en><a href=#the-navigator-object><span class=secno>5.2 </span>The <code title=worker-Navigator>Navigator</code> object</a></span></li>
151     <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>
152     <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>
153     <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>
154 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>
155     <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>
156     <!--end-toc-->
157 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>
158 wakaba 1.111
159     <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>
160    
161 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>
162 wakaba 1.111
163     <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
164     background independently of any user interface scripts.</span></p>
165    
166     <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
167     scripts that respond to clicks or other user interactions, and
168     allows long tasks to be executed without yielding to keep the page
169     responsive.</span></p>
170    
171     <p class="no-ja-translation" data-ja-hash="52e3c8127ee80a92ae3709986b8f2450"><span class=en-original lang=en>Workers (as these background scripts are called herein) are
172     relatively heavy-weight, and are not intended to be used in large
173     numbers. For example, it would be inappropriate to launch one worker
174     for each pixel of a four megapixel image. The examples below show
175     some appropriate uses of workers.</span></p>
176    
177     <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
178     start-up performance cost, and a high per-instance memory cost.</span></p>
179    
180    
181     <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>
182    
183 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>
184 wakaba 1.111
185     <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
186     following subsections show various examples of this use.</span><span class=ja-translation lang=ja>労働者は色々なことに使えます。次の各節では、色々な使い方の例を示します。</span></p>
187    
188     <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>
189    
190 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>
191 wakaba 1.111
192     <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
193     expensive task without interrupting the user interface.</span><span class=ja-translation lang=ja>労働者の一番単純な用法は、計算的に高価な仕事を利用者界面を中断させずに実行するというものです。</span></p>
194    
195 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
196     (na&iuml;vely) compute prime numbers, and progressively displays the
197     most recently found prime number.</span><span class=ja-translation lang=ja>この例では、主たる文書が労働者を作って素数を (素朴な方法で) 計算させ、
198     新しく見つかった素数を順番に表示してゆきます。</span></p>
199 wakaba 1.111
200     <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>
201    
202     <pre class="no-ja-translation" data-ja-hash="45b861d46157f155d38040db723bafd1"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
203     &lt;html&gt;
204     &lt;head&gt;
205     &lt;title&gt;Worker example: One-core computation&lt;/title&gt;
206     &lt;/head&gt;
207     &lt;body&gt;
208     &lt;p&gt;The highest prime number discovered so far is: &lt;output id="result"&gt;&lt;/output&gt;&lt;/p&gt;
209     &lt;script&gt;
210     var worker = new Worker('worker.js');
211     worker.onmessage = function (event) {
212     document.getElementById('result').textContent = event.data;
213     };
214     &lt;/script&gt;
215     &lt;/body&gt;
216     &lt;/html&gt;</span></pre>
217    
218 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
219 wakaba 1.111 creates a worker and returns a <code><a href=#worker>Worker</a></code> object
220     representing that worker, which is used to communicate with the
221 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>
222 wakaba 1.111
223     <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>
224    
225     <pre class="no-ja-translation" data-ja-hash="35390f08d92125ad461fd6bb5969cb0c"><span class=en-original lang=en>var n = 1;
226     search: while (true) {
227     n += 1;
228     for (var i = 2; i &lt;= Math.sqrt(n); i += 1)
229     if (n % i == 0)
230     continue search;
231     // found a prime!
232     postMessage(n);
233     }</span></pre>
234    
235     <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
236     number. To send a message back to the page, the <code title=dom-DedicatedWorkerGlobalScope-postMessage><a href=#dom-dedicatedworkerglobalscope-postmessage>postMessage()</a></code>
237     method is used to post a message when a prime is found.</span></p>
238    
239     <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>
240    
241    
242    
243     <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>
244    
245 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>
246 wakaba 1.111
247     <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
248     task is to listen for notifications from the server, and, when
249     appropriate, either add or remove data from the client-side
250     database.</span></p>
251    
252     <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
253     page, the main page can start the worker by just doing:</span><span class=ja-translation lang=ja>労働者と主たる頁の間に通信は発生しませんので、
254     主たる頁は単に次のようにするだけで労働者を開始できます。</span></p>
255    
256     <pre class="no-ja-translation" data-ja-hash="c87d2a32789642a7a7353364dffa7c04"><span class=en-original lang=en>&lt;script&gt;
257     new Worker('worker.js');
258     &lt;/script&gt;</span></pre>
259    
260     <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>
261    
262     <pre class="no-ja-translation" data-ja-hash="cfd35229b68e597b6a21322a3e3c1aea"><span class=en-original lang=en>var server = new WebSocket('ws://whatwg.org/database');
263     var database = openDatabase('demobase', '1.0', 'Demo Database', 10240);
264     server.onmessage = function (event) {
265     // data is in the format "command key value"
266     var data = event.data.split(' ');
267     switch (data[0]) {
268     case '+':
269     database.transaction(function(tx) {
270     tx.executeSql('INSERT INTO pairs (key, value) VALUES (?, ?)', data[1], data[2]);
271     });
272     case '-':
273     database.transaction(function(tx) {
274     tx.executeSql('DELETE FROM pairs WHERE key=? AND value=?', data[1], data[2]);
275     });
276     }
277     };</span></pre>
278    
279     <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>
280     mechanism and opens the local database (which, we presume, has been
281     created earlier). The worker then just listens for messages from the
282     server and acts on them as appropriate, forever (or until the main
283     page is closed).</span></p>
284    
285     <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
286     this example online</a>. (This example will not actually function,
287     since the server does not actually exist and the database is not
288     created by this sample code.)</span></p>
289    
290    
291    
292     <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>
293    
294 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>
295 wakaba 1.111
296     <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
297     fetching stock updates for at regular intervals, and one for
298     fetching performing search queries that the user requests.</span><span class=ja-translation lang=ja>この例では、主たる文書は2つの労働者を使います。
299     1つは一定間隔で株価の更新を取得するためのもので、もう1つは利用者の要求した検索の照会を行う取得のためのものです。</span></p>
300    
301     <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>
302    
303     <pre class="no-ja-translation" data-ja-hash="a4e743797f3cad5ba0d0016878e0e28c"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
304     &lt;html&gt;
305     &lt;head&gt;
306     &lt;title&gt;Worker example: Stock ticker&lt;/title&gt;
307     &lt;script&gt;
308     // TICKER
309     var symbol = 'GOOG'; // default symbol to watch
310     var ticker = new Worker('ticker.js');
311    
312     // SEARCHER
313     var searcher = new Worker('searcher.js');
314     function search(query) {
315     searcher.postMessage(query);
316     }
317    
318     // SYMBOL SELECTION UI
319     function select(newSymbol) {
320     symbol = newSymbol;
321     ticker.postMessage(symbol);
322     }
323     &lt;/script&gt;
324     &lt;/head&gt;
325     &lt;body onload="search('')"&gt;
326     &lt;p&gt;&lt;output id="symbol"&gt;&lt;/output&gt; &lt;output id="value"&gt;&lt;/output&gt;&lt;/p&gt;
327     &lt;script&gt;
328     ticker.onmessage = function (event) {
329     var data = event.data.split(' ');
330     document.getElementById('symbol').textContent = data[0];
331     document.getElementById('value').textContent = data[1];
332     };
333     ticker.postMessage(symbol);
334     &lt;/script&gt;
335     &lt;p&gt;&lt;label&gt;Search: &lt;input type="text" autofocus oninput="search(this.value)"&gt;&lt;/label&gt;&lt;/p&gt;
336     &lt;ul id="results"&gt;&lt;/ul&gt;
337     &lt;script&gt;
338     searcher.onmessage = function (event) {
339     var data = event.data.split(' ');
340     var results = document.getElementById('results');
341     while (results.hasChildNodes()) // clear previous results
342     results.removeChild(results.firstChild);
343     for (var i = 0; i &lt; data.length; i += 1) {
344     // add a list item with a button for each result
345     var li = document.createElement('li');
346     var button = document.createElement('button');
347     button.value = data[i];
348     button.type = 'button';
349     button.onclick = function () { select(this.value); };
350     button.textContent = data[i];
351     li.appendChild(button);
352     results.appendChild(li);
353     }
354     };
355     &lt;/script&gt;
356     &lt;p&gt;(The data in this example is not real. Try searching for "Google" or "Apple".)&lt;/p&gt;
357     &lt;/body&gt;
358     &lt;/html&gt;</span></pre>
359    
360     <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
361     network calls. This library is as follows:</span><span class=ja-translation lang=ja>両労働者は実際のネットワークの呼び出しを行う共通のライブラリーを使います。
362     このライブラリーは次の通りです。</span></p>
363    
364     <pre class="no-ja-translation" data-ja-hash="764d750a19834bf904d276466724339c"><span class=en-original lang=en>function get(url) {
365     try {
366     var xhr = new XMLHttpRequest();
367     xhr.open('GET', url, false);
368     xhr.send();
369     return xhr.responseText;
370     } catch (e) {
371     return ''; // turn all errors into empty results
372     }
373     }</span></pre>
374    
375     <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>
376    
377     <pre class="no-ja-translation" data-ja-hash="66ef47eaf421ea8066871b71807859be"><span class=en-original lang=en>importScripts('io.js');
378     var timer;
379     var symbol;
380     function update() {
381     postMessage(symbol + ' ' + get('stock.cgi?' + symbol));
382     timer = setTimeout(update, 10000);
383     }
384     onmessage = function (event) {
385     if (timer)
386     clearTimeout(timer);
387     symbol = event.data;
388     update();
389     };</span></pre>
390    
391     <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>
392    
393     <pre class="no-ja-translation" data-ja-hash="ac0353e2a69ae5ffdc861cca404ef9f0"><span class=en-original lang=en>importScripts('io.js');
394     onmessage = function (event) {
395     postMessage(get('search.cgi?' + event.data));
396     };</span></pre>
397    
398     <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>
399    
400    
401     <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>
402    
403 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>
404 wakaba 1.111
405     <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
406     are all viewing the same map. All the windows share the same map
407     information, with a single worker coordinating all the viewers. Each
408     viewer can move around independently, but if they set any data on
409     the map, all the viewers are updated.</span></p>
410    
411     <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
412     the viewers:</span><span class=ja-translation lang=ja>主たる頁は特に何もなく、単に表示器を開くためだけのものです。</span></p>
413    
414     <pre class="no-ja-translation" data-ja-hash="e27ef9096d7661be60af654b55813524"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
415     &lt;html&gt;
416     &lt;head&gt;
417     &lt;title&gt;Workers example: Multiviewer&lt;/title&gt;
418     &lt;script&gt;
419     function openViewer() {
420     window.open('viewer.html');
421     }
422     &lt;/script&gt;
423     &lt;/head&gt;
424     &lt;body&gt;
425     &lt;p&gt;&lt;button type=button onclick="openViewer()"&gt;Open a new
426     viewer&lt;/button&gt;&lt;/p&gt;
427     &lt;p&gt;Each viewer opens in a new window. You can have as many viewers
428     as you like, they all view the same data.&lt;/p&gt;
429     &lt;/body&gt;
430     &lt;/html&gt;</span></pre>
431    
432     <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>
433    
434     <pre class="no-ja-translation" data-ja-hash="6f90bb09ab3ecf0dc089f72f0f7bf32b"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
435     &lt;html&gt;
436     &lt;head&gt;
437     &lt;title&gt;Workers example: Multiviewer viewer&lt;/title&gt;
438     &lt;script&gt;
439     var worker = new SharedWorker('worker.js', 'core');
440    
441     // CONFIGURATION
442     function configure(event) {
443     if (event.data.substr(0, 4) != 'cfg ') return;
444     var name = event.data.substr(4).split(' ', 1);
445     // update display to mention our name is name
446     document.getElementsByTagName('h1')[0].textContent += ' ' + name;
447     // no longer need this listener
448     worker.port.removeEventListener('message', configure, false);
449     }
450     worker.port.addEventListener('message', configure, false);
451    
452     // MAP
453     function paintMap(event) {
454     if (event.data.substr(0, 4) != 'map ') return;
455     var data = event.data.substr(4).split(',');
456     // display tiles data[0] .. data[8]
457     var canvas = document.getElementById('map');
458     var context = canvas.getContext('2d');
459     for (var y = 0; y &lt; 3; y += 1) {
460     for (var x = 0; x &lt; 3; x += 1) {
461     var tile = data[y * 3 + x];
462     if (tile == '0')
463     context.fillStyle = 'green';
464     else
465     context.fillStyle = 'maroon';
466     fillRect(x * 50, y * 50, 50, 50);
467     }
468     }
469     }
470     worker.port.addEventListener('message', paintMap, false);
471    
472     // PUBLIC CHAT
473     function updatePublicChat(event) {
474     if (event.data.substr(0, 4) != 'txt ') return;
475     var name = event.data.substr(4).split(' ', 1);
476     var message = event.data.substr(4 + length(name) + 1);
477     // display "&lt;name&gt; message" in public chat
478     var dialog = document.getElementById('public');
479     var dt = document.createElement('dt');
480     dt.textContent = name;
481     dialog.appendChild(dt);
482     var dd = document.createElement('dd');
483     dd.textContent = message;
484     dialog.appendChild(dd);
485     }
486     worker.port.addEventListener('message', updatePublicChat, false);
487    
488     // PRIVATE CHAT
489     function startPrivateChat(event) {
490     if (event.data.substr(0, 4) != 'msg ') return;
491     var name = event.data.substr(4).split(' ', 1);
492     var port = event.ports[0];
493     // display a private chat UI
494     var ul = document.getElementById('private');
495     var li = document.createElement('li');
496     var h3 = document.createElement('h3');
497     h3.textContent = 'Private chat with ' + name;
498     li.appendChild(h3);
499     var dialog = document.createElement('dialog');
500     var addMessage = function(name, message) {
501     var dt = document.createElement('dt');
502     dt.textContent = name;
503     dialog.appendChild(dt);
504     var dd = document.createElement('dd');
505     dd.textContent = message;
506     dialog.appendChild(dd);
507     };
508     port.onmessage = function (event) {
509     addMessage(name, event.data);
510     };
511     li.appendChild(dialog);
512     var form = document.createElement('form');
513     var p = document.createElement('p');
514     var input = document.createElement('input');
515     input.size = 50;
516     p.appendChild(input);
517     p.appendChild(document.createTextNode(' '));
518     var button = document.createElement('button');
519     button.textContent = 'Post';
520     p.appendChild(button);
521     form.onsubmit = function () {
522     port.postMessage(input.value);
523     addMessage('me', input.value);
524     input.value = '';
525     return false;
526     };
527     form.appendChild(p);
528     li.appendChild(form);
529     }
530     worker.port.addEventListener('message', startPrivateChat, false);
531     &lt;/script&gt;
532     &lt;/head&gt;
533     &lt;body&gt;
534     &lt;h1&gt;Viewer&lt;/h1&gt;
535     &lt;h2&gt;Map&lt;/h2&gt;
536     &lt;p&gt;&lt;canvas id="map" height=150 width=150&gt;&lt;/canvas&gt;&lt;/p&gt;
537     &lt;p&gt;
538     &lt;button type=button onclick="worker.port.postMessage('mov left')"&gt;Left&lt;/button&gt;
539     &lt;button type=button onclick="worker.port.postMessage('mov up')"&gt;Up&lt;/button&gt;
540     &lt;button type=button onclick="worker.port.postMessage('mov down')"&gt;Down&lt;/button&gt;
541     &lt;button type=button onclick="worker.port.postMessage('mov right')"&gt;Right&lt;/button&gt;
542     &lt;button type=button onclick="worker.port.postMessage('set 0')"&gt;Set 0&lt;/button&gt;
543     &lt;button type=button onclick="worker.port.postMessage('set 1')"&gt;Set 1&lt;/button&gt;
544     &lt;/p&gt;
545     &lt;h2&gt;Public Chat&lt;/h2&gt;
546     &lt;dialog id="public"&gt;&lt;/dialog&gt;
547     &lt;form onsubmit="worker.port.postMessage('txt ' + message.value); message.value = ''; return false;"&gt;
548     &lt;p&gt;
549     &lt;input type="text" name="message" size="50"&gt;
550     &lt;button&gt;Post&lt;/button&gt;
551     &lt;/p&gt;
552     &lt;/form&gt;
553     &lt;h2&gt;Private Chat&lt;/h2&gt;
554     &lt;ul id="private"&gt;&lt;/ul&gt;
555     &lt;/body&gt;
556     &lt;/html&gt;
557     </span></pre>
558    
559     <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
560     viewer is written.</span><span class=ja-translation lang=ja>表示器の書き方についていくつか注意したい重要な点があります。</span></p>
561    
562     <p class="has-ja-translation" data-ja-hash="8bc9c1f9e0e102128838ea8c31c51306"><span class=en-original lang=en><strong>Multiple listeners</strong>. Instead of a single message
563     processing function, the code here attaches multiple event
564     listeners, each one performing a quick check to see if it is
565     relevant for the message. In this example it doesn't make much
566     difference, but if multiple authors wanted to collaborate using a
567     single port to communicate with a worker, it would allow for
568     independent code instead of changes having to all be made to a
569     single event handling function.</span><span class=ja-translation lang=ja><strong>複数の聴取器</strong>。この符号では、メッセージ処理関数を1つ用意する代わりに、
570     複数の事象聴取器を付与し、それぞれが、それがメッセージに関連するかどうかを見るためにさらりと検査を行っています。
571     この例では大きな違いにはなりませんが、複数の著者が労働者と通信するために1つのポートを使って協調したい場合には、
572     独立した符号にできるので変更がある度に1つの事象取扱関数をいじらざるを得なくて済みます。</span></p>
573    
574     <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
575     unregister specific listeners when you are done with them, as is
576     done with the <code title="">configure()</code> method in this
577     example.</span></p>
578    
579     <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>
580    
581 wakaba 1.159 <pre class="no-ja-translation" data-ja-hash="2a6833ffcfe9252a21a8582ad69a4adf"><span class=en-original lang=en>
582     var nextName = 0;
583 wakaba 1.111 function getNextName() {
584     // this could use more friendly names
585     // but for now just return a number
586     return nextName++;
587     }
588    
589     var map = [
590     [0, 0, 0, 0, 0, 0, 0],
591     [1, 1, 0, 1, 0, 1, 1],
592     [0, 1, 0, 1, 0, 0, 0],
593     [0, 1, 0, 1, 0, 1, 1],
594     [0, 0, 0, 1, 0, 0, 0],
595     [1, 0, 0, 1, 1, 1, 1],
596     [1, 1, 0, 1, 1, 0, 1],
597     ];
598    
599     function wrapX(x) {
600     if (x &lt; 0) return wrapX(x + map[0].length);
601     if (x &gt;= map[0].length) return wrapX(x - map[0].length);
602     return x;
603     }
604    
605     function wrapY(y) {
606     if (y &lt; 0) return wrapY(y + map.length);
607     if (y &gt;= map[0].length) return wrapY(y - map.length);
608     return y;
609     }
610    
611     function sendMapData(callback) {
612     var data = '';
613     for (var y = viewer.y-1; y &lt;= viewer.y+1; y += 1) {
614     for (var x = viewer.x-1; x &lt;= viewer.x+1; x += 1) {
615     if (data != '')
616     data += ',';
617     data += map[y][x];
618     }
619     }
620     callback('map ' + data);
621     }
622    
623     var viewers = {};
624     onconnect = function (event) {
625     event.ports[0]._name = getNextName();
626     event.ports[0]._data = { port: event.port, x: 0, y: 0, };
627     viewers[event.ports[0]._name] = event.port._data;
628     event.ports[0].postMessage('cfg ' + name);
629     event.ports[0].onmessage = getMessage;
630     sendMapData(event.ports[0].postMessage);
631     };
632    
633     function getMessage(event) {
634     switch (event.data.substr(0, 4)) {
635     case 'mov ':
636     var direction = event.data.substr(4);
637     var dx = 0;
638     var dy = 0;
639     switch (direction) {
640     case 'up': dy = -1; break;
641     case 'down': dy = 1; break;
642     case 'left': dx = -1; break;
643     case 'right': dx = 1; break;
644     }
645     event.target._data.x = wrapX(event.target._data.x + dx);
646     event.target._data.y = wrapY(event.target._data.y + dy);
647     sendMapData(event.target.postMessage);
648     break;
649     case 'set ':
650     var value = event.data.substr(4);
651     map[event.target._data.y][event.target._data.x] = value;
652     for (var viewer in viewers)
653     sendMapData(viewers[viewer].port.postMessage);
654     break;
655     case 'txt ':
656     var name = event.target._name;
657     var message = event.data.substr(4);
658     for (var viewer in viewers)
659     viewers[viewer].port.postMessage('txt ' + name + ' ' + message);
660     break;
661     case 'msg ':
662     var party1 = event._data;
663     var party2 = viewers[event.data.substr(4).split(' ', 1)];
664     if (party2) {
665     var channel = new MessageChannel();
666     party1.port.postMessage('msg ' + party2.name, [channel.port1]);
667     party2.port.postMessage('msg ' + party1.name, [channel.port2]);
668     }
669     break;
670     }
671     }</span></pre>
672    
673     <p class="no-ja-translation" data-ja-hash="80f59a8dae1df6b25c537e5041683f5d"><span class=en-original lang=en><strong>Connecting to multiple pages</strong>. The script uses
674     the <code title=handler-SharedWorkerGlobalScope-onconnect><a href=#handler-sharedworkerglobalscope-onconnect>onconnect</a></code>
675     event listener to listen for multiple connections.</span></p>
676    
677     <p class="has-ja-translation" data-ja-hash="5ce666b6338718b46fb0dee22dbea88c"><span class=en-original lang=en><strong>Direct channels</strong>. When the worker receives a
678     "msg" message from one viewer naming another viewer, it sets up a
679     direct connection between the two, so that the two viewers can
680     communicate directly without the worker having to proxy all the
681     messages.</span><span class=ja-translation lang=ja><strong>直接通信路</strong>。労働者がある閲覧器から他の閲覧器を名指した「msg」メッセージを受信した時は、
682     両者間の直接の接続を設定し、労働者がすべてのメッセージを仲介せずとも両閲覧器が直接通信できるようにします。</span></p>
683    
684     <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>
685    
686    
687     <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>
688    
689 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>
690 wakaba 1.111
691     <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
692     performance is to split computationally expensive tasks amongst
693     multiple workers. In this example, a computationally expensive task
694     that is to be performed for every number from 1 to 10,000,000 is
695     farmed out to ten subworkers.</span></p>
696    
697     <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>
698    
699     <pre class="no-ja-translation" data-ja-hash="45b861d46157f155d38040db723bafd1"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
700     &lt;html&gt;
701     &lt;head&gt;
702     &lt;title&gt;Worker example: One-core computation&lt;/title&gt;
703     &lt;/head&gt;
704     &lt;body&gt;
705     &lt;p&gt;The highest prime number discovered so far is: &lt;output id="result"&gt;&lt;/output&gt;&lt;/p&gt;
706     &lt;script&gt;
707     var worker = new Worker('worker.js');
708     worker.onmessage = function (event) {
709     document.getElementById('result').textContent = event.data;
710     };
711     &lt;/script&gt;
712     &lt;/body&gt;
713     &lt;/html&gt;</span></pre>
714    
715     <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>
716    
717     <pre class="no-ja-translation" data-ja-hash="c2f14df3c3648ecb143c9e271b6721df"><span class=en-original lang=en>// settings
718     var num_workers = 10;
719     var items_per_worker = 1000000;
720    
721     // start the workers
722     var result = 0;
723     var pending_workers = num_workers;
724     for (var i = 0; i &lt; num_workers; i += 1) {
725     var worker = new Worker('core.js');
726     worker.postMessage(i * items_per_worker);
727     worker.postMessage((i+1) * items_per_worker);
728     worker.onmessage = storeResult;
729     }
730    
731     // handle the results
732     function storeResult(event) {
733     result += 1*event.data;
734     pending_workers -= 1;
735     if (pending_workers &lt;= 0)
736     postMessage(result); // finished!
737     }</span></pre>
738    
739     <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
740     that waits for all the subworkers to respond.</span><span class=ja-translation lang=ja>これは部分労働者を開始するループと、
741     すべての部分労働者が応答するのを待つ取扱器から成っています。</span></p>
742    
743     <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>
744    
745     <pre class="no-ja-translation" data-ja-hash="90fc569c1c634a87b725ebbe4cc1e2f4"><span class=en-original lang=en>var start;
746     onmessage = getStart;
747     function getStart(event) {
748     start = 1*event.data;
749     onmessage = getEnd;
750     }
751    
752     var end;
753     function getEnd(event) {
754     end = 1*event.data;
755     onmessage = null;
756     work();
757     }
758    
759     function work() {
760     var result = 0;
761     for (var i = start; i &lt; end; i += 1) {
762     // perform some complex calculation here
763     result += 1;
764     }
765     postMessage(result);
766     close();
767     }</span></pre>
768    
769     <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
770     for the range of numbers thus specified, and then report the result
771     back to the parent.</span><span class=ja-translation lang=ja>部分労働者は2つの事象で2つの数を受信し、指定された数の範囲の計算を行った後、
772     結果を親に報告します。
773     </span></p>
774    
775     <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>
776    
777    
778     <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>
779    
780 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>
781 wakaba 1.111
782     <p class="no-ja-translation" data-ja-hash="12371907fb7e8389f76fabaf7a5f8303"><span class=en-original lang=en>Suppose that a cryptography library is made available that
783     provides three tasks:</span></p>
784    
785 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>
786 wakaba 1.111
787     <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
788     public key and then the private key.</span></dd>
789    
790     <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>
791    
792     <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
793     first giving the public key, and the remainder giving the
794     plaintext, each of which is encrypted and then sent on that same
795     channel as the cyphertext. The user can close the port when it is
796     done encrypting content.</span></dd>
797    
798     <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>
799    
800     <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
801     first giving the private key, and the remainder giving the
802     cyphertext, each of which is decrypted and then sent on that same
803     channel as the plaintext. The user can close the port when it is
804     done decrypting content.</span></dd>
805    
806 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>
807 wakaba 1.111
808     <pre class="no-ja-translation" data-ja-hash="6c23fb6fef8f715101d908de56f2cb63"><span class=en-original lang=en>function handleMessage(e) {
809     if (e.data == "genkeys")
810     genkeys(e.ports[0]);
811     else if (e.data == "encrypt")
812     encrypt(e.ports[0]);
813     else if (e.data == "decrypt")
814     decrypt(e.ports[0]);
815     }
816    
817     function genkeys(p) {
818     var keys = _generateKeyPair();
819     p.postMessage(keys[0]);
820     p.postMessage(keys[1]);
821     }
822    
823     function encrypt(p) {
824     var key, state = 0;
825     p.onmessage = function (e) {
826     if (state == 0) {
827     key = e.data;
828     state = 1;
829     } else {
830     p.postMessage(_encrypt(key, e.data));
831     }
832     };
833     }
834    
835     function decrypt(p) {
836     var key, state = 0;
837     p.onmessage = function (e) {
838     if (state == 0) {
839     key = e.data;
840     state = 1;
841     } else {
842     p.postMessage(_decrypt(key, e.data));
843     }
844     };
845     }
846    
847     // support being used as a shared worker as well as a dedicated worker
848     if (this.onmessage) // dedicated worker
849     onmessage = handleMessage;
850     else // shared worker
851     onconnect = function (e) { e.port.onmessage = handleMessage; }
852    
853    
854     // the "crypto" functions:
855    
856     function _generateKeyPair() {
857     return [Math.random(), Math.random()];
858     }
859    
860     function _encrypt(k, s) {
861     return 'encrypted-' + k + ' ' + s;
862     }
863    
864     function _decrypt(k, s) {
865     return s.substr(s.indexOf(' ')+1);
866     }</span></pre>
867    
868     <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
869     real cryptography.</span></p>
870    
871     <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>
872    
873     <pre class="no-ja-translation" data-ja-hash="e88a411ca9b20f088116732dc0db6171"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
874     &lt;html&gt;
875     &lt;head&gt;
876     &lt;title&gt;Worker example: Crypto library&lt;/title&gt;
877     &lt;script&gt;
878     var crytoLib = new Worker('libcrypto-v1.js'); // or could use 'libcrypto-v2.js'
879     function getKeys() {
880     var state = 0;
881     cryptoLib.startConversation("genkeys").onmessage = function (e) {
882     if (state == 0)
883     document.getElementById('public').value = e.data;
884     else if (state == 1)
885     document.getElementById('private').value = e.data;
886     state += 1;
887     };
888     }
889     function enc() {
890     var port = cryptoLib.startConversation("encrypt");
891     port.postMessage(document.getElementById('public').value);
892     port.postMessage(document.getElementById('input').value);
893     port.onmessage = function (e) {
894     document.getElementById('input').value = e.data;
895     port.close();
896     };
897     }
898     function dec() {
899     var port = cryptoLib.startConversation("decrypt");
900     port.postMessage(document.getElementById('private').value);
901     port.postMessage(document.getElementById('input').value);
902     port.onmessage = function (e) {
903     document.getElementById('input').value = e.data;
904     port.close();
905     };
906     }
907     &lt;/script&gt;
908     &lt;style&gt;
909     textarea { display: block; }
910     &lt;/style&gt;
911     &lt;/head&gt;
912     &lt;body onload="getKeys()"&gt;
913     &lt;fieldset&gt;
914     &lt;legend&gt;Keys&lt;/legend&gt;
915     &lt;p&gt;&lt;label&gt;Public Key: &lt;textarea id="public"&gt;&lt;/textarea&gt;&lt;/label&gt;&lt;/p&gt;
916     &lt;p&gt;&lt;label&gt;Private Key: &lt;textarea id="private"&gt;&lt;/textarea&gt;&lt;/label&gt;&lt;/p&gt;
917     &lt;/fieldset&gt;
918     &lt;p&gt;&lt;label&gt;Input: &lt;textarea id="input"&gt;&lt;/textarea&gt;&lt;/label&gt;&lt;/p&gt;
919     &lt;p&gt;&lt;button onclick="enc()"&gt;Encrypt&lt;/button&gt; &lt;button onclick="dec()"&gt;Decrypt&lt;/button&gt;&lt;/p&gt;
920     &lt;/body&gt;
921     &lt;/html&gt;</span></pre>
922    
923     <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
924     crypto work onto subworkers. This could be done as follows:</span></p>
925    
926     <pre class="no-ja-translation" data-ja-hash="4700bd96e4f3524347953c148b483479"><span class=en-original lang=en>function handleMessage(e) {
927     if (e.data == "genkeys")
928     genkeys(e.ports[0]);
929     else if (e.data == "encrypt")
930     encrypt(e.ports[0]);
931     else if (e.data == "decrypt")
932     decrypt(e.ports[0]);
933     }
934    
935     function genkeys(p) {
936     var generator = new Worker('libcrypto-v2-generator.js');
937     generator.postMessage('', [p]);
938     }
939    
940     function encrypt(p) {
941     p.onmessage = function (e) {
942     var key = e.data;
943     var encryptor = new Worker('libcrypto-v2-encryptor.js');
944     encryptor.postMessage(key, [p]);
945     };
946     }
947    
948     function encrypt(p) {
949     p.onmessage = function (e) {
950     var key = e.data;
951     var decryptor = new Worker('libcrypto-v2-decryptor.js');
952     decryptor.postMessage(key, [p]);
953     };
954     }
955    
956     // support being used as a shared worker as well as a dedicated worker
957     if (this.onmessage) // dedicated worker
958     onmessage = handleMessage;
959     else // shared worker
960     onconnect = function (e) { e.ports[0].onmessage = handleMessage };
961     </span></pre>
962    
963     <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>
964    
965     <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>
966    
967     <pre class="no-ja-translation" data-ja-hash="7fcbde64ee437c101414bcc98d9e1ee0"><span class=en-original lang=en>onmessage = function (e) {
968     var k = _generateKeyPair();
969     e.ports[0].postMessage(k[0]);
970     e.ports[0].postMessage(k[1]);
971     close();
972     }
973    
974     function _generateKeyPair() {
975     return [Math.random(), Math.random()];
976     }</span></pre>
977    
978     <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>
979    
980     <pre class="no-ja-translation" data-ja-hash="94aaf906f90e9b3539c4219ef2be60cf"><span class=en-original lang=en>onmessage = function (e) {
981     var key = e.data;
982     e.ports[0].onmessage = function (e) {
983     var s = e.data;
984     postMessage(_encrypt(key, s));
985     }
986     }
987    
988     function _encrypt(k, s) {
989     return 'encrypted-' + k + ' ' + s;
990     }</span></pre>
991    
992     <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>
993    
994     <pre class="no-ja-translation" data-ja-hash="c91e2f3055da293b534ac3c10648b23e"><span class=en-original lang=en>onmessage = function (e) {
995     var key = e.data;
996     e.ports[0].onmessage = function (e) {
997     var s = e.data;
998     postMessage(_decrypt(key, s));
999     }
1000     }
1001    
1002     function _decrypt(k, s) {
1003     return s.substr(s.indexOf(' ')+1);
1004     }</span></pre>
1005    
1006 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
1007     is happening &mdash; the API hasn't changed; the library can
1008 wakaba 1.111 delegate to subworkers without changing its API, even though it is
1009     accepting data using message channels.</span></p>
1010    
1011     <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>
1012    
1013    
1014    
1015    
1016     <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>
1017    
1018     <p class="has-ja-translation" data-ja-hash="8b0f72fe04577949924ab1e2997e0d8b"><span class=en-original lang=en>All diagrams, examples, and notes in this specification are
1019     non-normative, as are all sections explicitly marked non-normative.
1020     Everything else in this specification is normative.</span><span class=ja-translation lang=ja>この仕様書のすべての図、例示、注意書き、ならびに規定の一部ではないと明記したすべての節は、
1021     規定の一部ではありません。
1022     この仕様書のそれ以外の部分はすべて規定の一部です。</span></p>
1023    
1024     <p class="has-ja-translation" data-ja-hash="8adc9958d29b879426b71b5b9eae46db"><span class=en-original lang=en>The key words "MUST", "MUST NOT", "REQUIRED", <!--"SHALL", "SHALL
1025     NOT",--> "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
1026     "OPTIONAL" in the normative parts of this document are to be
1027     interpreted as described in RFC2119. For readability, these words do
1028     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>」、
1029     「<em class=rfc2119 title="MUST NOT">してはなりません</em>」、
1030     「<em class=rfc2119 title="REQUIRED">必須です</em>」、<!--"SHALL", "SHALL
1031     NOT",-->「<em class=rfc2119 title="SHOULD">するべきです</em>」、
1032     「<em class=rfc2119 title="SHOULD NOT">するべきではありません</em>」、
1033     「<em class=rfc2119 title="RECOMMENDED">推奨します</em>」、「<em class=rfc2119 title="MAY">して構いません</em>」、
1034     「<em class=rfc2119 title="OPTIONAL">任意です</em>」は、 RFC 2119 で説明されているように解釈します。
1035     この仕様書<ins class=ja-note>の原文</ins>では、
1036     可読性の観点から、
1037     これらの語<ins class=ja-note>の原語</ins>のすべて大文字による表記は行っていません。
1038     <a href=#refsRFC2119>[RFC2119]</a></span></p>
1039    
1040     <p class="has-ja-translation" data-ja-hash="63dc4357c416e0e0f292a5f662ca71ab"><span class=en-original lang=en>Requirements phrased in the imperative as part of algorithms
1041     (such as "strip any leading space characters" or "return false and
1042     abort these steps") are to be interpreted with the meaning of the
1043     key word ("must", "should", "may", etc) used in introducing the
1044     algorithm.</span><span class=ja-translation lang=ja>算法の一部として<ins class=ja-note>動作の指示の形で (原文では</ins>命令形で<ins class=ja-note>) </ins>記述された要件
1045     (例えば「先頭の間隔文字をすべて除去します」や「偽を返し、これらの段階を停止します」)
1046     は、算法を紹介するに当たって使われたキーワード (<em class=rfc2119 title="MUST">しなければなりません</em>、
1047     <em class=rfc2119 title="SHOULD">するべきです</em>、<em class=rfc2119 title="MAY">して構いません</em>など) の意味により解釈します。</span></p>
1048    
1049     <p class="has-ja-translation" data-ja-hash="a5a0db584980ce3f2448983d6188b2d1"><span class=en-original lang=en>Some conformance requirements are phrased as requirements on
1050     attributes, methods or objects. Such requirements are to be
1051     interpreted as requirements on user agents.</span><span class=ja-translation lang=ja>いくつかの適合性要件は属性やメソッドやオブジェクトの要件として説明されています。
1052     そのような要件は、利用者エージェントに関する要件として解釈します。</span></p>
1053    
1054     <p class="has-ja-translation" data-ja-hash="27386c326b98d878b3c408c60b6095b0"><span class=en-original lang=en>Conformance requirements phrased as algorithms or specific steps
1055     may be implemented in any manner, so long as the end result is
1056     equivalent. (In particular, the algorithms defined in this
1057     specification are intended to be easy to follow, and not intended to
1058     be performant.)</span><span class=ja-translation lang=ja>算法や特定の段階として説明されている適合性要件は、
1059     最終的な結果が等価である限り、任意の方法で実装して<em class=rfc2119 title="MAY">構いません</em>。
1060     (特に、この仕様書で定義されている算法は追うのを簡単にしており、
1061     高性能であることを目指してはいません。)</span></p>
1062    
1063     <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
1064     agents.</span><span class=ja-translation lang=ja>この仕様書で定義する唯一の適合性の級は利用者エージェントです。</span></p>
1065    
1066     <p class="has-ja-translation" data-ja-hash="57959e6c42e8d5141b11e501bf60cc2f"><span class=en-original lang=en>User agents may impose implementation-specific limits on
1067     otherwise unconstrained inputs, e.g. to prevent denial of service
1068     attacks, to guard against running out of memory, or to work around
1069     platform-specific limitations.</span><span class=ja-translation lang=ja>利用者エージェントは、サービス拒否攻撃を防ぐため、
1070     記憶容量を使い尽くすことを防ぐため、
1071     あるいは環境特有の制限に対応するためなどの目的で、
1072     別段の制約のない入力に対して実装特有の制限を設けて<em class=rfc2119 title="MAY">構いません</em>。</span></p>
1073    
1074    
1075 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>
1076 wakaba 1.111
1077     <p class="has-ja-translation" data-ja-hash="8dc27a34324d9e41d25c6bbbc2d2551c"><span class=en-original lang=en>This specification relies on several other underlying
1078     specifications.</span><span class=ja-translation lang=ja>この仕様書は、他のいくつかの下位の仕様書に依存しています。</span></p>
1079    
1080 wakaba 1.159 <dl><dt class="no-ja-translation" data-ja-hash="6bff62b10d884fb77428cfe168cd783d"><span class=en-original lang=en>HTML5</span></dt>
1081 wakaba 1.111
1082     <dd>
1083    
1084     <p class="has-ja-translation" data-ja-hash="99d7a97f59faf316f6125ad288390f21"><span class=en-original lang=en>Many fundamental concepts from HTML5 are used by this
1085     specification. <a href=#refsHTML5>[HTML5]</a></span><span class=ja-translation lang=ja>この仕様書では、 HTML5 の多くの基礎的な概念を使用します。
1086     <a href=#refsHTML5>[HTML5]</a></span></p>
1087    
1088     </dd>
1089    
1090     <dt class="no-ja-translation" data-ja-hash="21838f6e93b1a2157b16dcb6281ff225"><span class=en-original lang=en>WebIDL</span></dt>
1091    
1092     <dd>
1093    
1094 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
1095     WebIDL specification. <a href=#refsWEBIDL>[WEBIDL]</a></span></p>
1096 wakaba 1.111
1097     </dd>
1098    
1099 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>
1100 wakaba 1.111
1101     <p class="has-ja-translation" data-ja-hash="f99630e4a7f12f2c4ecb88e02bf4a644"><span class=en-original lang=en>The construction "a <code title="">Foo</code> object", where
1102     <code title="">Foo</code> is actually an interface, is sometimes
1103     used instead of the more accurate "an object implementing the
1104     interface <code title="">Foo</code>".</span><span class=ja-translation lang=ja>「<code title="">Foo</code> オブジェクト」という構文 (<code title="">Foo</code>
1105     は実際には界面) を時々使いますが、より正確な「界面 <code title="">Foo</code>
1106     を実装しているオブジェクト」の代わりに用いています。</span></p>
1107    
1108 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
1109 wakaba 1.111 scripts in Web applications, and does not necessarily imply the
1110     existence of an actual <code>Document</code> object or of any other
1111     <code>Node</code> objects as defined in the DOM Core
1112 wakaba 1.158 specifications. <a href=#refsDOMCORE>[DOMCORE]</a></span></p>
1113 wakaba 1.111
1114 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
1115 wakaba 1.111 being retrieved (e.g. by author script), and is said to be
1116 wakaba 1.183 <em>setting</em> when a new value is assigned to it.</span></p>
1117 wakaba 1.111
1118     <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    
1123 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>
1124 wakaba 1.111
1125     <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
1126     workers. Dedicated workers, once created, and are linked to their
1127     creator; but message ports can be used to communicate from a
1128     dedicated worker to multiple other browsing contexts or
1129     workers. Shared workers, on the other hand, are named, and once
1130     created any script running in the same <span>origin</span> can
1131     obtain a reference to that worker and communicate with it.</span></p>
1132    
1133    
1134 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>
1135 wakaba 1.111
1136     <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>
1137    
1138 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>
1139 wakaba 1.111
1140 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> {
1141 wakaba 1.111 readonly attribute <a href=#workerglobalscope>WorkerGlobalScope</a> <a href=#dom-workerglobalscope-self title=dom-WorkerGlobalScope-self>self</a>;
1142     readonly attribute <a href=#workerlocation>WorkerLocation</a> <a href=#dom-workerglobalscope-location title=dom-WorkerGlobalScope-location>location</a>;
1143    
1144     void <a href=#dom-workerglobalscope-close title=dom-WorkerGlobalScope-close>close</a>();
1145 wakaba 1.137 <!-- v2-onclose attribute <span>Function</span> <span title="handler-WorkerGlobalScope-onclose">onclose</span>;
1146     --> attribute <span>Function</span> <a href=#handler-workerglobalscope-onerror title=handler-WorkerGlobalScope-onerror>onerror</a>;
1147 wakaba 1.154 };
1148 wakaba 1.184 <a href=#workerglobalscope>WorkerGlobalScope</a> implements <a href=#workerutils>WorkerUtils</a>;
1149     <a href=#workerglobalscope>WorkerGlobalScope</a> implements <span>EventTarget</span>;</span></pre>
1150 wakaba 1.111
1151     <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
1152     must return the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object itself.</span></p>
1153    
1154 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>
1155 wakaba 1.111 attribute must return the <code><a href=#workerlocation>WorkerLocation</a></code> object created
1156     for the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object when the worker was
1157     created. It represents the <span>absolute URL</span> of the script
1158 wakaba 1.112 that was used to initialize the worker, after any redirects.</span></p>
1159 wakaba 1.111
1160 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>
1161 wakaba 1.111 method on a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, the user agent
1162     must run the following steps (atomically):</span></p>
1163    
1164 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
1165 wakaba 1.111 have been added to the <span>event loop</span>'s <span title="task
1166     queue">task queues</span>.</span></p>
1167    
1168     <!-- v2-onclose
1169 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
1170     event</span> named <code title="event-close">close</code> at the
1171 wakaba 1.111 <code>WorkerGlobalScope</code> object.</span></p></li>
1172     -->
1173    
1174     <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
1175     <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to
1176     true. (This prevents any further tasks from being queued.)</span></li>
1177    
1178     <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
1179     ports</a>.</span></li>
1180    
1181 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
1182     corresponding <span title="event handler event type">event handler
1183     event types</span>) that must be supported, as IDL attributes, by
1184     objects implementing the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>
1185     interface:</span></p>
1186 wakaba 1.111
1187 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>
1188 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>
1189     </span></table><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>
1190 wakaba 1.111
1191 wakaba 1.188 <pre class="idl no-ja-translation" data-ja-hash="77cfd043067c77163e5f8886b3e13e12"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
1192 wakaba 1.154 interface <dfn id=dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
1193 wakaba 1.188 void <a href=#dom-dedicatedworkerglobalscope-postmessage title=dom-DedicatedWorkerGlobalScope-postMessage>postMessage</a>(in any message, in optional <span>MessagePortArray</span> ports);<!--
1194 wakaba 1.111 <span>MessagePort</span> <span title="dom-DedicatedWorkerGlobalScope-startConversation">startConversation</span>(in any message);-->
1195 wakaba 1.137 attribute <span>Function</span> <a href=#handler-dedicatedworkerglobalscope-onmessage title=handler-DedicatedWorkerGlobalScope-onmessage>onmessage</a>;
1196 wakaba 1.111 };</span></pre>
1197    
1198     <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
1199     had an implicit <code>MessagePort</code> associated with them. This
1200     port is part of a channel that is set up when the worker is created,
1201     but it is not exposed. This object must never be garbage collected
1202     before the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span></p>
1203    
1204     <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
1205     at the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span></p>
1206    
1207     <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><!--
1208     and <dfn
1209     title="dom-DedicatedWorkerGlobalScope-startConversation"><code>startConversation()</code></dfn>-->
1210     method<!--s (startConversation)--> on
1211     <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> objects must act as if, when
1212     invoked, it<!--/they (startConversation)--> immediately invoked the
1213     method of the same name on the port, with the same arguments, and
1214     returned the same return value.</span></p>
1215    
1216 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
1217     corresponding <span title="event handler event type">event handler
1218     event types</span>) that must be supported, as IDL attributes, by
1219     objects implementing the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code>
1220     interface:</span></p>
1221 wakaba 1.111
1222 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>
1223 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>
1224     </span></table><p class="no-ja-translation" data-ja-hash="0c348925ec14031682913edd79ceb3d3"><span class=en-original lang=en>For the purposes of the <span>offline application cache</span>
1225 wakaba 1.111 networking model, a dedicated worker is an extension of the
1226     <span>cache host</span> from which it was created.</span></p>
1227    
1228    
1229    
1230 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>
1231 wakaba 1.111
1232 wakaba 1.154 <pre class="idl no-ja-translation" data-ja-hash="d50871df68a2c60553b6a55d6cd199bc"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
1233     interface <dfn id=sharedworkerglobalscope>SharedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
1234 wakaba 1.111 readonly attribute DOMString <a href=#dom-sharedworkerglobalscope-name title=dom-SharedWorkerGlobalScope-name>name</a>;
1235     readonly attribute <span>ApplicationCache</span> <a href=#dom-sharedworkerglobalscope-applicationcache title=dom-SharedWorkerGlobalScope-applicationCache>applicationCache</a>;
1236 wakaba 1.137 attribute <span>Function</span> <a href=#handler-sharedworkerglobalscope-onconnect title=handler-SharedWorkerGlobalScope-onconnect>onconnect</a>;
1237 wakaba 1.111 };</span></pre>
1238    
1239     <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
1240     their global object for each connection.</span><span class=ja-translation lang=ja>共有労働者は、各接続について大域オブジェクトの <code
1241     title=event-WorkerGlobalScope-connect>connect</code> 事象を通じてメッセージ・ポートを受信します。</span></p>
1242    
1243     <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>
1244     attribute must return the value it was assigned when the
1245     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object was created by the
1246     "<a href=#run-a-worker>run a worker</a>" algorithm. Its value represents the name
1247     that can be used to obtain a reference to the worker using the
1248     <code><a href=#sharedworker>SharedWorker</a></code> constructor.</span></p>
1249    
1250 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
1251     corresponding <span title="event handler event type">event handler
1252     event types</span>) that must be supported, as IDL attributes, by
1253     objects implementing the <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>
1254     interface:</span></p>
1255 wakaba 1.111
1256 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>
1257 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>
1258     </span></table><p class="no-ja-translation" data-ja-hash="ac81324d4bd9e8a1090d3db7e2e34ca9"><span class=en-original lang=en>For the purposes of the <span>offline application cache</span>
1259 wakaba 1.111 networking model, a shared worker is its own <span>cache
1260     host</span>. The <a href=#run-a-worker>run a worker</a> algorithm takes care of
1261     associating the worker with an <span>application cache</span>.</span></p>
1262    
1263     <p class="note no-ja-translation" data-ja-hash="eb3d6f833d8fb42a6cea6890baeaf796"><span class=en-original lang=en>The <dfn id=dom-sharedworkerglobalscope-applicationcache title=dom-SharedWorkerGlobalScope-applicationCache><code>applicationCache</code></dfn>
1264     attribute returns the <code>ApplicationCache</code> object for the
1265     worker.</span></p><!-- normative conf criteria is in the appcache section
1266     -->
1267    
1268    
1269 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>
1270 wakaba 1.111
1271     <p class="no-ja-translation" data-ja-hash="5d71247ae9c7e88e4244d78062ed4760"><span class=en-original lang=en>Both the <span>origin</span> and <span>effective script
1272     origin</span> of scripts running in workers are the
1273     <span>origin</span> of the <span>absolute URL</span> given in that
1274     the worker's <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
1275     represents.</span></p>
1276    
1277    
1278 wakaba 1.139 <h3 id=decoding-scripts class="no-ja-translation" data-ja-hash="857fdf8086147b470ea754e3a4f6c667"><span class=en-original lang=en><span class=secno>4.3 </span>Decoding scripts</span></h3>
1279 wakaba 1.111
1280     <p class="no-ja-translation" data-ja-hash="4356cf7102f2b838e2b8201769e8d8ed"><span class=en-original lang=en>When a user agent is to <dfn id=decode-a-script-resource>decode a script resource</dfn> to
1281     obtain its source in Unicode, it must run the following steps:</span></p>
1282    
1283 wakaba 1.159 <ol><li>
1284 wakaba 1.111
1285     <p class="no-ja-translation" data-ja-hash="6571036d6f54aff003088a24c671dfc7"><span class=en-original lang=en>Let <var title="">character encoding</var> be <i title="">unknown</i>.</span></p>
1286    
1287     </li>
1288    
1289     <li>
1290    
1291     <p class="no-ja-translation" data-ja-hash="26531f4017a22df14ccb6d1eee6264e7"><span class=en-original lang=en>For each of the rows in the following table, starting with the
1292     first one and going down, if the resource has as many or more
1293     bytes available than the number of bytes in the first column, and
1294     the first bytes of the resource match the bytes given in the first
1295     column, then let <var title="">character encoding</var> be the
1296     encoding given in the cell in the second column of that row:</span></p>
1297    
1298     <!-- this table is present in several forms in this file; keep them in sync -->
1299 wakaba 1.159 <table><thead><tr><th class="has-ja-translation" data-ja-hash="cedd90a7eefcd8a4c28ead96824a8c5a"><span class=en-original lang=en>Bytes in Hexadecimal
1300 wakaba 1.111 </span><span class=ja-translation lang=ja>バイトの十六進数表現</span><th class="has-ja-translation" data-ja-hash="169a6f6b44766410bffebf76ff3dcf17"><span class=en-original lang=en>Encoding
1301 wakaba 1.159 </span><span class=ja-translation lang=ja>符号化</span><tbody><!-- nobody uses this
1302 wakaba 1.111 <tr>
1303     <td class="no-ja-translation" data-ja-hash="3b523bf4f5c7a5f0ff3963fdad8049a9"><span class=en-original lang=en>00 00 FE FF
1304     </span><td class="no-ja-translation" data-ja-hash="59e7c7bf45f69d917450ae560a578a4f"><span class=en-original lang=en>UTF-32BE
1305     </span><tr>
1306     <td class="no-ja-translation" data-ja-hash="e25d985f134390f54047573f4a1eca7e"><span class=en-original lang=en>FF FE 00 00
1307     </span><td class="no-ja-translation" data-ja-hash="83039ece36f32fba267280c8de26edf5"><span class=en-original lang=en>UTF-32LE
1308 wakaba 1.159 --></span><tr><td class="no-ja-translation" data-ja-hash="d9594f5bb7f7387cd1c6d8cb69fb5774"><span class=en-original lang=en>FE FF
1309 wakaba 1.111 </span><td class="no-ja-translation" data-ja-hash="58ee3e3038c435c19dfa106ac8b67d73"><span class=en-original lang=en>UTF-16BE
1310 wakaba 1.159 </span><tr><td class="no-ja-translation" data-ja-hash="3d748bc0fd7caa28cb9bd697c840f46f"><span class=en-original lang=en>FF FE
1311 wakaba 1.111 </span><td class="no-ja-translation" data-ja-hash="600ebb464ff7e548ff5a09c2c12f551b"><span class=en-original lang=en>UTF-16LE
1312 wakaba 1.159 </span><tr><td class="no-ja-translation" data-ja-hash="5d1b4e645efa35016b709ffbd308e29d"><span class=en-original lang=en>EF BB BF
1313 wakaba 1.111 </span><td class="no-ja-translation" data-ja-hash="ae3b3df9970b49b6523e608759bc957d"><span class=en-original lang=en>UTF-8
1314     <!-- nobody uses this
1315     --></span><!--<tr>
1316     <td class="no-ja-translation" data-ja-hash="7d1cd1d79b5ca7151c2153c016bc5c49"><span class=en-original lang=en>DD 73 66 73
1317     </span><td class="no-ja-translation" data-ja-hash="48ad579645de9a10a9a6f78fab81fb65"><span class=en-original lang=en>UTF-EBCDIC
1318     -->
1319 wakaba 1.159 </span></table><p class="note no-ja-translation" data-ja-hash="9a59482dc82872c443907eeed8818b89"><span class=en-original lang=en>This step looks for Unicode Byte Order Marks
1320 wakaba 1.111 (BOMs).</span></p>
1321    
1322     </li>
1323    
1324     <li>
1325    
1326     <p class="no-ja-translation" data-ja-hash="1bdaa4e7198023dcf4f7984a4898619a"><span class=en-original lang=en>If <var title="">character encoding</var> is still <i title="">unknown</i>, apply the <span>algorithm for extracting an
1327     encoding from a Content-Type</span> to the resource's <span title=Content-Type>Content Type metadata</span>; if this returns
1328     an encoding, and the user agent supports that encoding, then let
1329     <var title="">character encoding</var> be that encoding.</span></p>
1330    
1331     </li>
1332    
1333     <li>
1334    
1335     <p class="no-ja-translation" data-ja-hash="6bbc467e6929571d61a6b95004cf9974"><span class=en-original lang=en>If <var title="">character encoding</var> is still <i title="">unknown</i>, then let <var title="">character
1336     encoding</var> be UTF-8.</span></p>
1337    
1338     </li>
1339    
1340     <li>
1341    
1342     <p class="no-ja-translation" data-ja-hash="178b2c0b2c79b7e38b80e13f0fac6983"><span class=en-original lang=en>Convert the resource to Unicode using the character encoding
1343     given by <var title="">character encoding</var>.</span></p>
1344    
1345     <p class="no-ja-translation" data-ja-hash="ee427dae6dec0a6bf731b3069f9a4abd"><span class=en-original lang=en>Return the text that is so obtained.</span></p>
1346    
1347     </li>
1348    
1349 wakaba 1.159 </ol><h3 id=the-event-loop class="no-ja-translation" data-ja-hash="96715962ce61ea28085d7e170ec30e73"><span class=en-original lang=en><span class=secno>4.4 </span>The event loop</span></h3>
1350 wakaba 1.111
1351 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
1352     loop</span> distinct from those defined for <span title="unit of
1353     related similar-origin browsing contexts">units of related
1354     similar-origin browsing contexts</span>. This <span>event
1355     loop</span> has no associated <span>browsing context</span>, and its
1356     <span title="task queue">task queues</span> only have events,
1357     callbacks, and networking activity as <span title=concept-task>tasks</span>. The processing model of these
1358     <span title="event loop">event loops</span> is defined below in the
1359     <a href=#run-a-worker>run a worker</a> algorithm.</span></p>
1360 wakaba 1.111
1361     <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
1362     initially be false, but which can get set to true by the algorithms
1363     in the processing model section below.</span></p>
1364    
1365 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
1366 wakaba 1.111 true, the <span>event loop</span>'s <span title="task queue">task
1367     queues</span> must discard any further <span title=concept-task>tasks</span> that would be added to them (tasks
1368 wakaba 1.190 already on the queue are unaffected except where otherwise
1369 wakaba 1.111 specified). Effectively, once the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is true,
1370     timers stop firing, notifications for all pending asynchronous
1371     operations are dropped, etc.</span></p>
1372    
1373    
1374 wakaba 1.133
1375 wakaba 1.139 <h3 id="the-worker's-lifetime" class="no-ja-translation" data-ja-hash="74a0efe3050847567026cd8638e4d2d6"><span class=en-original lang=en><span class=secno>4.5 </span>The worker's lifetime</span></h3>
1376 wakaba 1.111
1377     <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
1378     <code>MessagePort</code> objects.</span><span class=ja-translation lang=ja>労働者は、メッセージ通信路とその <code>MessagePort</code>
1379     オブジェクトを通じて、他の労働者や閲覧文脈と通信します。</span></p>
1380    
1381     <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
1382     scope</var> has a list of <dfn id="the-worker's-ports">the worker's ports</dfn>, which
1383     consists of all the <code>MessagePort</code> objects that are
1384     entangled with another port and that have one (but only one) port
1385     owned by <var title="">worker global scope</var>. This list includes
1386     <!--all the <code>MessagePort</code> objects that are in events
1387     pending in the <span>event loop</span>, as well as (commented out
1388     because in practice it makes no difference either way as far as I
1389     can tell, and it would be hard to strictly implement since these
1390     ports might not yet be across the thread boundary)--> the implicit
1391     <code>MessagePort</code> in the case of <a href=#dedicatedworkerglobalscope title=DedicatedWorkerGlobalScope>dedicated workers</a>.</span></p>
1392    
1393     <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
1394     worker's workers</dfn>. Initially this list is empty; it is
1395     populated when the worker creates or obtains further workers.</span></p>
1396    
1397     <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
1398     <dfn id="the-worker's-documents">the worker's <code>Document</code>s</dfn>. Initially this list
1399     is empty; it is populated when the worker is created.</span></p>
1400    
1401     <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
1402     worker's <code>Document</code>s</dfn>, the user agent must, for each
1403     worker in the list of <a href="#the-worker's-workers">the worker's workers</a> whose list
1404     of <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> does not contain
1405     <var title="">d</var>, <a href="#add-a-document-to-the-worker's-documents" title="add a document to the worker's
1406     documents">add <var title="">d</var> to <var title="">q</var>'s
1407     <code>WorkerGlobalScope</code> owner's list of <span>the worker's
1408     <code>Document</code>s</span></a>.</span></p> <!-- suggestions welcome
1409     on making this sentence into understandable English -->
1410    
1411     <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
1412     Document">discarded</span>, it must be removed from the list of
1413     <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> of each worker
1414     whose list contains that <code>Document</code>.</span></p>
1415    
1416     <p class="no-ja-translation" data-ja-hash="db482587a227e92fd91bc6be1c81ddb3"><span class=en-original lang=en>Given a <span>script's global scope</span> <var title="">o</var>
1417     when creating or obtaining a worker, the <dfn id=list-of-relevant-document-objects-to-add>list of relevant
1418     <code>Document</code> objects to add</dfn> depends on the type of
1419     <var title="">o</var>. If <var title="">o</var> is a
1420     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object (i.e. if we are creating a
1421     nested worker), then the relevant <code>Document</code>s are the
1422     <code>Document</code>s that are in <var title="">o</var>'s own list
1423     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
1424     <code>Document</code> is just the <code>Document</code> that is the
1425     <span>active document</span> of the <code>Window</code> object <var title="">o</var>.</span></p>
1426    
1427 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
1428 wakaba 1.111 list of <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> is not
1429     empty.</span></p>
1430    
1431     <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
1432     <a href=#permissible-worker>permissible worker</a> and either it has outstanding
1433     timers, database transactions, or network connections, or its list
1434     of <a href="#the-worker's-ports">the worker's ports</a> is not empty, or its
1435     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> is actually a
1436     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object (i.e. the worker is a
1437     shared worker).</span></p>
1438    
1439     <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
1440     of the <code>Document</code> objects in <a href="#the-worker's-documents">the worker's
1441     <code>Document</code>s</a> are <span>fully active</span>.</span></p>
1442    
1443     <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
1444     not an <a href=#active-needed-worker>active needed worker</a> but it is a
1445     <a href=#permissible-worker>permissible worker</a>.</span></p>
1446    
1447    
1448 wakaba 1.139 <h3 id=processing-model class="has-ja-translation" data-ja-hash="4eeffb677544f6c8799408c6b9021b4c"><span class=en-original lang=en><span class=secno>4.6 </span>Processing model</span><span class=ja-translation lang=ja><span class=secno>4.6 </span>処理モデル</span></h3>
1449 wakaba 1.111
1450 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
1451     <span>URL</span> <var title="">url</var>, a browsing context <var title="">owner browsing context</var>, an origin <var title="">owner
1452     origin</var>, and with global scope <var title="">worker global
1453     scope</var>, it must run the following steps:</span></p>
1454 wakaba 1.111
1455 wakaba 1.159 <ol><li>
1456 wakaba 1.111
1457     <p class="no-ja-translation" data-ja-hash="699e58187adc9ee37990500a66c83a8f"><span class=en-original lang=en>Create a completely separate and parallel execution environment
1458     (i.e. a separate thread or process or equivalent construct), and
1459     run the rest of these steps asynchronously in that context.</span></p>
1460    
1461     </li>
1462    
1463     <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
1464     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object (i.e. the worker is a
1465     shared worker), and there are any <span title="relevant application
1466     cache">relevant application caches</span> that are identified by a
1467     manifest URL with the <span>same origin</span> as <var title="">url</var> and that have <var title="">url</var> as one of
1468     their entries, <em>not</em> excluding entries marked as <span title=concept-appcache-foreign>foreign</span>, then associate the
1469     <var title="">worker global scope</var> with the <span title=concept-appcache-selection>most appropriate application
1470     cache</span> of those that match.</span></li>
1471    
1472     <li>
1473    
1474 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>
1475     <!-- not http-origin privacy sensitive -->
1476 wakaba 1.111
1477 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
1478 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
1479     origin</span> as the original <var title="">url</var>), then for
1480     each <code><a href=#worker>Worker</a></code> or <code><a href=#sharedworker>SharedWorker</a></code> object
1481     associated with <var title="">worker global scope</var>,
1482     <span>queue a task</span> to <span>fire a simple event</span>
1483 wakaba 1.195 named <code title=event-error>error</code> at that
1484 wakaba 1.112 object. Abort these steps.</span></p>
1485 wakaba 1.111
1486     <p class="no-ja-translation" data-ja-hash="a2c139226de4390d75b561512be824a7"><span class=en-original lang=en>If the attempt succeeds, then <a href=#decode-a-script-resource title="decode a script
1487     resource">decode the script resource</a> to obtain its <var title="">source</var>.</span></p>
1488    
1489     <p class="no-ja-translation" data-ja-hash="c880bce97c5a1aadccd8989fc4ec8551"><span class=en-original lang=en>Let <var title="">language</var> be JavaScript.</span></p>
1490    
1491     <p class="note has-ja-translation" data-ja-hash="5ba762159d9de3f8bd326fe0bcfac206"><span class=en-original lang=en>As with <code>script</code> elements, the MIME
1492     type of the script is ignored. Unlike with <code>script</code>
1493     elements, there is no way to override the type. It's always
1494     assumed to be JavaScript.</span><span class=ja-translation lang=ja><code>script</code> 要素と同様に、スクリプトの MIME 型は無視します。
1495     <code>script</code> 要素とは異なり、
1496     型を上書きする方法はありません。スクリプトは常に JavaScript
1497 wakaba 1.183 と仮定します。</span></p>
1498 wakaba 1.111
1499     </li>
1500    
1501     <li>
1502    
1503     <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
1504     created, as follows.</span></p>
1505    
1506     <p class="no-ja-translation" data-ja-hash="2dfcd0f76cde607de6cc88d70f390825"><span class=en-original lang=en>Create a new <span>script execution environment</span>
1507     set up as appropriate for the scripting language <var title="">language</var>.</span></p>
1508    
1509     <p class="no-ja-translation" data-ja-hash="fdf8b5f9ba18a31a8f48670142f51442"><span class=en-original lang=en>Parse/compile/initialize <var title="">source</var> using that
1510     <span>script execution environment</span>, as appropriate for <var title="">language</var>, and thus obtain a <span>list of code
1511     entry-points</span>; set the <i>initial code entry-point</i> to
1512     the entry-point for any executable code to be immediately run.</span></p>
1513    
1514     <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>
1515    
1516     <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>
1517    
1518     <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
1519     UTF-8. (This is just used for encoding non-ASCII characters in the
1520     query component of URLs.)</span></p>
1521    
1522     <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>
1523    
1524     </li>
1525    
1526     <li>
1527    
1528 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
1529 wakaba 1.111 worker such that no sooner than it stops being either a
1530     <a href=#protected-worker>protected worker</a> or a <a href=#suspendable-worker>suspendable
1531     worker</a>, and no later than it stops being a
1532     <a href=#permissible-worker>permissible worker</a>, <var title="">worker global
1533     scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is set
1534     to true<!-- v2-onclose and <span title="queue a task">a task is
1535 wakaba 1.195 queued</span> to <span>fire a simple event</span> named <code
1536 wakaba 1.111 title="event-close">close</code> at <var title="">worker global
1537     scope</var>-->.</span></p>
1538    
1539     </li>
1540    
1541     <li>
1542    
1543     <p class="no-ja-translation" data-ja-hash="24a8fa04f32239e0dafc1e98e466d6b4"><span class=en-original lang=en><strong>Suspending workers</strong>: Start monitoring the
1544     worker, such that whenever <var title="">worker global
1545     scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is false
1546     and the worker is a <a href=#suspendable-worker>suspendable worker</a>, the user
1547     agent suspends execution of script in that worker until such time
1548     as either the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag switches
1549     to true or the worker stops being a <a href=#suspendable-worker>suspendable
1550     worker</a>.</span></p>
1551    
1552     </li>
1553    
1554     <li>
1555    
1556     <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
1557     <span title=concept-script>script</span>'s <i>initial code
1558     entry-point</i>, and let that run until it either returns, fails
1559     to catch an exception, or gets prematurely aborted by the
1560     "<a href=#kill-a-worker>kill a worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>"
1561     algorithms defined below.</span></p>
1562    
1563 wakaba 1.151 <!-- v2-onclose
1564     <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
1565     worker</span>" algorithm, then that same algorithm will cause
1566     there to only be a single <span title="concept-task">task</span>
1567 wakaba 1.111 in the <span>event loop</span> at the next step, namely the task
1568 wakaba 1.151 for the <code title="message-close">close</code> event. The
1569     "<span>terminate a worker</span>" algorithm removes all the
1570 wakaba 1.111 events.</span></p>
1571 wakaba 1.151 -->
1572 wakaba 1.111
1573     </li>
1574    
1575     <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
1576     <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the worker is
1577     a dedicated worker), then enable the <span>port message
1578     queue</span> of the worker's implicit port.</span></li>
1579    
1580     <li>
1581    
1582     <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
1583     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
1584     to true.</span></p>
1585    
1586     </li>
1587    
1588     <li>
1589    
1590     <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
1591     <span title="task queue">task queues</span>, if any. The user
1592     agent may pick any <span>task queue</span>.</span></p>
1593    
1594     <p class="note no-ja-translation" data-ja-hash="2a401c207ed88f5206b2eb8a90fc91a6"><span class=en-original lang=en>The handling of events or the execution of
1595     callbacks might get prematurely aborted by the "<a href=#kill-a-worker>kill a
1596     worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>" algorithms
1597     defined below.</span></p>
1598    
1599     </li>
1600    
1601     <li>
1602    
1603     <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
1604     <span>task queue</span>.</span></p>
1605    
1606     </li>
1607    
1608     <li>
1609    
1610     <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
1611     <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
1612     to false, then jump back to the step above labeled <i>event
1613     loop</i>.</span></p>
1614    
1615     </li>
1616    
1617     <li>
1618    
1619     <p class="no-ja-translation" data-ja-hash="fb906768fcbbd4867b29825a7893fe6e"><span class=en-original lang=en>If there are any outstanding transactions that have callbacks
1620     that involve <span title=concept-script>scripts</span> whose
1621     <span title="script's global object">global object</span> is the
1622     <var title="">worker global scope</var>, roll them back (without
1623     invoking any of the callbacks).</span></p>
1624    
1625     </li>
1626    
1627     <li>
1628    
1629     <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
1630     of active timeouts</span> and its <span>list of active
1631     intervals</span>.</span></p>
1632    
1633     </li>
1634    
1635     <!-- v2-onclose
1636     <li>
1637    
1638 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>
1639 wakaba 1.111 object associated with <var title="">worker global scope</var>,
1640     <span>queue a task</span> to <span>fire a simple event</span>
1641 wakaba 1.195 named <code title="event-close">close</code> at that object.</span></p>
1642 wakaba 1.111
1643     </li>
1644     -->
1645 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
1646 wakaba 1.111 run the following steps in parallel with the worker's main loop (the
1647     "<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p>
1648    
1649 wakaba 1.159 <ol><!-- v2-onclose
1650 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
1651 wakaba 1.111 <span title="dom-WorkerGlobalScope-closing">closing</span> flag is
1652     false, <span>queue a task</span> to <span>fire a simple
1653 wakaba 1.195 event</span> named <code title="event-close">close</code> at the
1654 wakaba 1.111 worker's <code>WorkerGlobalScope</code> object.</span></p></li>
1655 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
1656 wakaba 1.111 true.</span></li>
1657    
1658     <!-- v2-onclose
1659     <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
1660     a worker</span>" processing model defined above immediately starts
1661     running event listeners registered for the <code
1662     title="event-close">close</code> event, this time should not be
1663     zero &mdash; the idea is that the <code
1664     title="event-close">close</code> event can be used to clean up
1665     when shutting down unexpectedly.</span></p></li>
1666     -->
1667    
1668     <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>
1669     queued in the <span>event loop</span>'s <span title="task
1670     queue">task queues</span><!-- v2-onclose other than the <code
1671     title="event-close">close</code> event that this algorithm just
1672     added-->, discard them without processing them.</span></li>
1673    
1674     <!-- v2-onclose
1675     <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
1676     this algorithm just queued hasn't yet been dispatched, then abort
1677     the script currently running in the worker.</span></p></li>
1678     -->
1679    
1680     <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>
1681    
1682     <li><p class="no-ja-translation" data-ja-hash="fbb7fecc04423fb209634e5473bd7ec1"><span class=en-original lang=en>Abort the script currently running in the worker<!--
1683     v2-onclose (if any script is running, then it will be a handler for
1684     the <code title="event-close">close</code> event)-->.</span></li>
1685    
1686 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>"
1687 wakaba 1.111 processing model on a worker at any time, e.g. in response to user
1688     requests, in response to CPU quota management, or when a worker
1689     stops being an <a href=#active-needed-worker>active needed worker</a> if the worker
1690     continues executing even after its <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag was
1691     set to true.</span></p>
1692    
1693 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
1694 wakaba 1.111 the following steps in parallel with the worker's main loop (the
1695     "<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p>
1696    
1697 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
1698 wakaba 1.111 <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to
1699     true.</span></li>
1700    
1701     <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>
1702     queued in the <span>event loop</span>'s <span title="task
1703     queue">task queues</span>, discard them without processing
1704     them.</span></li>
1705    
1706     <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>
1707    
1708     <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
1709     actually a <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the
1710     worker is a dedicated worker), then empty the <span>port message
1711     queue</span> of the port that the worker's implicit port is
1712     entangled with.</span></li>
1713    
1714 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
1715 wakaba 1.133 <span>DOM manipulation task source</span>.</span></p>
1716    
1717    
1718 wakaba 1.139 <h3 id=runtime-script-errors class="has-ja-translation" data-ja-hash="eb260f04266c3b94080b5c3f88c55a31"><span class=en-original lang=en><span class=secno>4.7 </span>Runtime script errors</span><span class=ja-translation lang=ja><span class=secno>4.7 </span>実行時スクリプト誤り</span></h3>
1719 wakaba 1.111
1720 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
1721     worker's scripts, if the error did not occur while handling a
1722     previous script error, the user agent must <span>report the
1723     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>
1724     attribute. <a href=#refsHTML5>[HTML5]</a></span></p>
1725 wakaba 1.111
1726 wakaba 1.137 <p class="no-ja-translation" data-ja-hash="1d4d18d12610442bca7072503caba230"><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
1727 wakaba 1.120 the error occurred while handling a previous script error, the error
1728 wakaba 1.137 should be reported to the user. <a href=#refsHTML5>[HTML5]</a></span></p>
1729 wakaba 1.111
1730 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
1731     the error occurred while handling a previous script error, the user
1732 wakaba 1.111 agent must <span>queue a task</span> to <a href=#fire-a-worker-error-event>fire a worker error
1733     event</a> at the <code><a href=#worker>Worker</a></code> object associated with the
1734     worker.</span></p>
1735    
1736     <p class="no-ja-translation" data-ja-hash="c96676fcc4ab90893eca070f70c76249"><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
1737     a <code><a href=#worker>Worker</a></code> object, it must dispatch an event that uses
1738     the <code><a href=#errorevent>ErrorEvent</a></code> interface, with the name <code title=event-error>error</code>, that doesn't bubble and is
1739     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
1740     appropriately. The default action of this event depends on whether
1741     the <code><a href=#worker>Worker</a></code> object is itself in a worker. If it is, and
1742     that worker is also a dedicated worker, then the user agent must
1743     again <span>queue a task</span> to <a href=#fire-a-worker-error-event>fire a worker error
1744     event</a> at the <code><a href=#worker>Worker</a></code> object associated with
1745     <em>that</em> worker. Otherwise, then the error should be reported
1746     to the user.</span></p>
1747    
1748 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
1749     <span>DOM manipulation task source</span>.</span></p>
1750    
1751 wakaba 1.159 <hr><pre class="idl no-ja-translation" data-ja-hash="75e1a0de2be298c9db36c73510aae01d"><span class=en-original lang=en>interface <dfn id=errorevent>ErrorEvent</dfn> : Event {
1752 wakaba 1.138 readonly attribute DOMString <a href=#dom-errorevent-message title=dom-ErrorEvent-message>message</a>;
1753     readonly attribute DOMString <a href=#dom-errorevent-filename title=dom-ErrorEvent-filename>filename</a>;
1754 wakaba 1.111 readonly attribute unsigned long <a href=#dom-errorevent-lineno title=dom-ErrorEvent-lineno>lineno</a>;
1755 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);
1756     void <a href=#dom-errorevent-initerroreventns title=dom-ErrorEvent-initErrorEventNS>initErrorEventNS</a>(in DOMString namespaceURIArg, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMString messageArg, in DOMString filenameArg, in unsigned long linenoArg);
1757 wakaba 1.111 };</span></pre>
1758    
1759 wakaba 1.155 <p class="no-ja-translation" data-ja-hash="741eed0816bcef0dfb1fed290dc14c9c"><span class=en-original lang=en>The <dfn id=dom-errorevent-initerrorevent title=dom-ErrorEvent-initErrorEvent><code>initErrorEvent()</code></dfn>
1760     and <dfn id=dom-errorevent-initerroreventns title=dom-ErrorEvent-initErrorEventNS><code>initErrorEventNS()</code></dfn>
1761 wakaba 1.111 methods must initialize the event in a manner analogous to the
1762 wakaba 1.155 similarly-named methods in the DOM Events interfaces. <a href=#refsDOMEVENTS>[DOMEVENTS]</a></span></p>
1763 wakaba 1.111
1764     <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>
1765     attribute represents the error message.</span></p>
1766    
1767 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>
1768 wakaba 1.111 attribute represents the <span>absolute URL</span> of the script in
1769 wakaba 1.120 which the error originally occurred.</span></p>
1770 wakaba 1.111
1771 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>
1772     attribute represents the line number where the error occurred in the
1773 wakaba 1.111 script.</span></p>
1774    
1775    
1776    
1777 wakaba 1.139 <h3 id=creating-workers class="has-ja-translation" data-ja-hash="f0a4732d38d01e3d103b68468f9fe234"><span class=en-original lang=en><span class=secno>4.8 </span>Creating workers</span><span class=ja-translation lang=ja><span class=secno>4.8 </span>労働者の作成</span></h3>
1778 wakaba 1.111
1779 wakaba 1.139 <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.8.1 </span>The <code><a href=#abstractworker>AbstractWorker</a></code> abstract interface</span><span class=ja-translation lang=ja><span class=secno>4.8.1 </span><code><a href=#abstractworker>AbstractWorker</a></code> 抽象界面</span></h4>
1780 wakaba 1.111
1781 wakaba 1.184 <pre class="idl no-ja-translation" data-ja-hash="ae85288d30c1abcbb559228527ba5cd6"><span class=en-original lang=en>interface <dfn id=abstractworker>AbstractWorker</dfn> {
1782 wakaba 1.137 attribute <span>Function</span> <a href=#handler-abstractworker-onerror title=handler-AbstractWorker-onerror>onerror</a>;
1783     <!-- v2-onclose attribute <span>Function</span> <span title="handler-AbstractWorker-onclose">onclose</span>; -->
1784 wakaba 1.184 };
1785     <a href=#abstractworker>AbstractWorker</a> implements <span>EventTarget</span>;</span></pre>
1786 wakaba 1.111
1787 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
1788     corresponding <span title="event handler event type">event handler
1789     event types</span>) that must be supported, as IDL attributes, by
1790     objects implementing the <code><a href=#abstractworker>AbstractWorker</a></code> interface:</span></p>
1791 wakaba 1.111
1792 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>
1793 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>
1794 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> -->
1795 wakaba 1.159 </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.8.2 </span>Dedicated workers and the <code><a href=#worker>Worker</a></code> interface</span></h4>
1796 wakaba 1.111
1797 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)]
1798 wakaba 1.111 interface <dfn id=worker>Worker</dfn> : <a href=#abstractworker>AbstractWorker</a> {
1799     void <a href=#dom-worker-terminate title=dom-Worker-terminate>terminate</a>();
1800    
1801 wakaba 1.188 void <a href=#dom-worker-postmessage title=dom-Worker-postMessage>postMessage</a>(in any message, in optional <span>MessagePortArray</span> ports);<!--
1802 wakaba 1.111 <span>MessagePort</span> <span title="dom-Worker-startConversation">startConversation</span>(in any message);-->
1803 wakaba 1.137 attribute <span>Function</span> <a href=#handler-worker-onmessage title=handler-Worker-onmessage>onmessage</a>;
1804 wakaba 1.111 };</span></pre>
1805    
1806     <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,
1807     when invoked, must cause the "<a href=#terminate-a-worker>terminate a worker</a>"
1808     algorithm to be run on the worker with with the object is
1809     associated.</span></p>
1810    
1811     <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
1812     <code>MessagePort</code> associated with them. This port is part of
1813     a channel that is set up when the worker is created, but it is not
1814     exposed. This object must never be garbage collected before the
1815     <code><a href=#worker>Worker</a></code> object.</span></p>
1816    
1817     <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
1818     at the <code><a href=#worker>Worker</a></code> object.</span></p>
1819    
1820     <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><!--
1821     and <dfn
1822     title="dom-Worker-startConversation"><code>startConversation()</code></dfn>-->
1823     method<!--s (startConversation)--> on <code><a href=#worker>Worker</a></code> objects
1824     must act as if, when invoked, it<!--/they (startConversation)-->
1825     immediately invoked the method of the same name on the port, with
1826     the same arguments, and returned the same return value.</span></p>
1827    
1828 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
1829     corresponding <span title="event handler event type">event handler
1830     event types</span>) that must be supported, as IDL attributes, by
1831     objects implementing the <code><a href=#worker>Worker</a></code> interface:</span></p>
1832 wakaba 1.111
1833 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>
1834 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>
1835     </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
1836 wakaba 1.111 user agent must run the following steps:</span></p>
1837    
1838 wakaba 1.159 <ol><li><p class="no-ja-translation" data-ja-hash="2ca4870c8239974ba241fd037e090c44"><span class=en-original lang=en><span title="resolve a url">Resolve</span> the <var title="">scriptURL</var> argument relative to the <span>first
1839 wakaba 1.121 script</span>'s <span title="script's base URL">base URL</span>,
1840     when the method is invoked.</span></li>
1841 wakaba 1.111
1842     <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>
1843     exception.</span><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
1844     例外を投げます。</span></li>
1845    
1846 wakaba 1.181 <li>
1847    
1848 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="e9b6e9d2a867fccb0475eb45e2b524d6"><span class=en-original lang=en>If the <span>origin</span> of the resulting <span>absolute
1849 wakaba 1.181 URL</span> is not the <span title="same origin">same</span> as the
1850 wakaba 1.191 origin of the <span>first script</span>, then throw a
1851     <span>security exception</span>.</span></p>
1852 wakaba 1.181
1853     <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
1854     scheme as the original page: you can't load a script from a <code title="">data:</code> URL or <code title="">javascript:</code>
1855     URL, and a <code>https:</code> page couldn't start workers using
1856     scripts with <code>http:</code> URLs.</span></p>
1857    
1858     </li>
1859 wakaba 1.111
1860     <li><p class="no-ja-translation" data-ja-hash="b5bddf55144f8b1ff3c2a755b8ada3e0"><span class=en-original lang=en><span>Create a new <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code>
1861     object</span>. Let <var title="">worker global scope</var> be this
1862     new object.</span></li>
1863    
1864     <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
1865     <var title="">worker global scope</var>. Let <var title="">worker</var> be this new object.</span></li>
1866    
1867     <li><p class="no-ja-translation" data-ja-hash="7b066bb31c499860c38db05cac15b6b9"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span> owned
1868     by the <span title="script's global scope">global scope</span> of
1869     the <span title=concept-script>script</span> that invoked the
1870     constructor. Let this be the <var title="">outside
1871     port</var>.</span></li>
1872    
1873     <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
1874     title="">worker</var> に関連付けます。</span></li>
1875    
1876     <li><p class="no-ja-translation" data-ja-hash="2d1b035dbaad3feca57eb124d161b034"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span> owned
1877     by <var title="">worker global scope</var>. Let <var title="">inside port</var> be this new object.</span></li>
1878    
1879     <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>
1880    
1881     <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
1882     <var title="">inside port</var>.</span></li>
1883    
1884     <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
1885     steps asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、以降の段階を非同期に走らせます。</span></li>
1886    
1887     <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
1888     queue</span>.</span></li>
1889    
1890     <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
1891     queue</span>.</span></li>
1892    
1893     <li>
1894    
1895     <p class="no-ja-translation" data-ja-hash="55e6e7d35bf5d3d20aefe01d055f5e6b"><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
1896     <code>Document</code> objects to add</a> given the <span title="script's global scope">global scope</span> of the <span title=concept-script>script</span> that invoked the
1897     constructor.</span></p>
1898    
1899     </li>
1900    
1901     <li>
1902    
1903     <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
1904     <var title="">worker global scope</var>'s list of <span>the
1905     worker's <code>Document</code>s</span></a> the
1906     <code>Document</code> objects in <var title="">docs</var>.</span></p>
1907    
1908     </li>
1909    
1910     <li>
1911    
1912     <p class="no-ja-translation" data-ja-hash="7c3d95cd57d78baee3024bef7b2b71f6"><span class=en-original lang=en>If the <span title="script's global scope">global scope</span>
1913     of the <span title=concept-script>script</span> that invoked the
1914     constructor is a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object (i.e. we
1915     are creating a nested worker), add <var title="">worker global
1916     scope</var> to the list of <a href="#the-worker's-workers">the worker's workers</a> of the
1917     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object that is the <span title="script's global scope">global scope</span> of the <span title=concept-script>script</span> that invoked the
1918     constructor.</span></p>
1919    
1920     </li>
1921    
1922     <li>
1923    
1924 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="c0b955c131bbd7d2836c38435a0b27c5"><span class=en-original lang=en><a href=#run-a-worker>Run a worker</a> for the resulting <span>absolute
1925 wakaba 1.111 URL</span>, with the <span>script browsing context</span> of the
1926     script that invoked the method as the <var title="">owner browsing
1927 wakaba 1.191 context</var>, with the <span>origin</span> of the <span>first
1928     script</span> as the <var title="">owner origin</var>, and with
1929     <var title="">worker global scope</var> as the global scope.</span></p>
1930 wakaba 1.111
1931     </li>
1932    
1933 wakaba 1.159 </ol><p class="no-ja-translation" data-ja-hash="62d6758eaf2020c4112ab186636f4f33"><span class=en-original lang=en>This constructor must be visible when the <span>script's global
1934 wakaba 1.124 scope</span> is either a <code>Window</code> object or an object
1935     implementing the <code><a href=#workerutils>WorkerUtils</a></code> interface.</span></p>
1936    
1937    
1938 wakaba 1.139 <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.8.3 </span>Shared workers and the <code><a href=#sharedworker>SharedWorker</a></code> interface</span></h4>
1939 wakaba 1.111
1940 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)]
1941 wakaba 1.111 interface <dfn id=sharedworker>SharedWorker</dfn> : <a href=#abstractworker>AbstractWorker</a> {
1942     readonly attribute <span>MessagePort</span> <a href=#dom-sharedworker-port title=dom-SharedWorker-port>port</a>;
1943     };</span></pre>
1944    
1945     <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>
1946     attribute must return the value it was assigned by the object's
1947     constructor. It represents the <code>MessagePort</code> for
1948     communicating with the shared worker.</span></p>
1949    
1950     <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>
1951     constructor is invoked, the user agent must run the following
1952     steps:</span></p>
1953    
1954 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
1955 wakaba 1.111 title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span></li>
1956    
1957     <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>
1958     exception.</span><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
1959     例外を投げます。</span></li>
1960    
1961 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
1962     resulting <span>absolute URL</span>.</span></li>
1963    
1964 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
1965     argument, or the empty string if the second argument was
1966     omitted.</span></li>
1967 wakaba 1.168
1968 wakaba 1.181 <li>
1969    
1970 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="a0ddb617095aaa64146faab364566f11"><span class=en-original lang=en>If the <span>origin</span> of <var title="">scriptURL</var> is
1971 wakaba 1.181 not the <span title="same origin">same</span> as the origin of the
1972 wakaba 1.191 <span>first script</span>, then throw a <span>security
1973 wakaba 1.181 exception</span>.</span></p>
1974    
1975     <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
1976     scheme as the original page: you can't load a script from a <code title="">data:</code> URL or <code title="">javascript:</code>
1977     URL, and a <code>https:</code> page couldn't start workers using
1978     scripts with <code>http:</code> URLs.</span></p>
1979    
1980     </li>
1981 wakaba 1.111
1982     <li>
1983    
1984     <p class="no-ja-translation" data-ja-hash="55e6e7d35bf5d3d20aefe01d055f5e6b"><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
1985     <code>Document</code> objects to add</a> given the <span title="script's global scope">global scope</span> of the <span title=concept-script>script</span> that invoked the
1986     constructor.</span></p>
1987    
1988     </li>
1989    
1990     <li>
1991    
1992     <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>
1993    
1994 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
1995 wakaba 1.111 shortly be associated with a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>
1996     object. Let this <code><a href=#sharedworker>SharedWorker</a></code> object be <var title="">worker</var>.</span></li>
1997    
1998     <li><p class="no-ja-translation" data-ja-hash="629bd7f10d8162f8dbf21128830192dc"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span>
1999     owned by the <span title="script's global scope">global
2000     scope</span> of the script that invoked the method. Let this be
2001     the <var title="">outside port</var>.</span></li>
2002    
2003     <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>
2004    
2005 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
2006     null.</span></li>
2007    
2008     <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
2009     there exists a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object whose
2010     <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag
2011     is false, whose <code title=dom-WorkerGlobalScope-name>name</code> attribute is
2012     exactly equal to <var title="">name</var>, and whose <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
2013     represents an <span>absolute URL</span> with the <span>same
2014     origin</span> as <var title="">scriptURL</var>, then let <var title="">worker global scope</var> be that
2015     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object.</span></li>
2016    
2017     <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
2018     and there exists a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object
2019     whose <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a>
2020     flag is false, and whose <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
2021     is exactly equal to <var title="">scriptURL</var>, then let <var title="">worker global scope</var> be that
2022     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object.</span></li>
2023    
2024 wakaba 1.111 <li>
2025    
2026 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
2027     run these steps:</span></p>
2028 wakaba 1.111
2029 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>
2030 wakaba 1.111 attribute represents an <span>absolute URL</span> that is not
2031 wakaba 1.168 exactly equal to <var title="">scriptURL</var>, then throw a
2032     <code>URL_MISMATCH_ERR</code> exception and abort all these
2033     steps.</span></li>
2034 wakaba 1.111
2035     <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
2036     global scope</var> に関連付けます。</span></li>
2037    
2038     <li><p class="no-ja-translation" data-ja-hash="bab9c8cea075e0f3614c731f09b49892"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span>
2039     owned by <var title="">worker global scope</var>. Let this
2040     be the <var title="">inside port</var>.</span></li>
2041    
2042     <li><p class="no-ja-translation" data-ja-hash="bf2642ced659847cb4402165d2ab3a8e"><span class=en-original lang=en><span>Entangle</span> <var title="">outside port</var>
2043     and <var title="">inside port</var>.</span></li>
2044    
2045     <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
2046     step asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、
2047     次の段階を非同期に実行します。</span></li>
2048    
2049     <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>
2050     interface, with the name <code title=event-connect>connect</code>, which does not bubble, is
2051     not cancelable, has no default action, has a <code title=dom-MessageEvent-data>data</code> attribute whose value
2052     is the empty string and has a <code title=dom-MessageEvent-ports>ports</code> attribute whose
2053     value is an array containing only the newly created port, and
2054     <span>queue a task</span> to dispatch the event at <var title="">worker global 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     <p class="no-ja-translation" data-ja-hash="71e9b593868deeebab7e077539f42964"><span class=en-original lang=en>If the <span title="script's global scope">global
2068     scope</span> of the <span title=concept-script>script</span>
2069     that invoked the constructor is a
2070     <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
2071     worker's workers</a> of the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>
2072     object that is the <span title="script's global scope">global
2073     scope</span> of the <span title=concept-script>script</span>
2074     that invoked the constructor.</span></p>
2075    
2076     </li>
2077    
2078     <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>
2079    
2080 wakaba 1.159 </ol></li>
2081 wakaba 1.111
2082     <li><p class="no-ja-translation" data-ja-hash="08b38f99ab8a1b8451edf6d12f8f60d9"><span class=en-original lang=en><span>Create a new <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>
2083     object</span>. Let <var title="">worker global scope</var> be
2084     this new object.</span></li>
2085    
2086     <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
2087     global scope</var> に関連付けます。</span></li>
2088    
2089     <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
2090     <var title="">worker global scope</var> to <var title="">name</var>.</span></li>
2091    
2092     <li><p class="no-ja-translation" data-ja-hash="2d1b035dbaad3feca57eb124d161b034"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span>
2093     owned by <var title="">worker global scope</var>. Let <var title="">inside port</var> be this new object.</span></li>
2094    
2095     <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
2096     <var title="">inside port</var>.</span></li>
2097    
2098 wakaba 1.159 </ol></li>
2099 wakaba 1.111
2100     <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
2101     steps asynchronously.</span></li>
2102    
2103     <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>
2104     interface, with the name <code title=event-connect>connect</code>, which does not bubble, is not
2105     cancelable, has no default action, has a <code title=dom-MessageEvent-data>data</code> attribute whose value is
2106     the empty string and has a <code title=dom-MessageEvent-ports>ports</code> attribute whose value
2107     is an array containing only the newly created port, and <span>queue
2108     a task</span> to dispatch the event at <var title="">worker global
2109     scope</var>.</span></li>
2110    
2111     <li>
2112    
2113     <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
2114     <var title="">worker global scope</var>'s list of <span>the
2115     worker's <code>Document</code>s</span></a> the
2116     <code>Document</code> objects in <var title="">docs</var>.</span></p>
2117    
2118     </li>
2119    
2120     <li>
2121    
2122     <p class="no-ja-translation" data-ja-hash="71e9b593868deeebab7e077539f42964"><span class=en-original lang=en>If the <span title="script's global scope">global scope</span>
2123     of the <span title=concept-script>script</span> that invoked the
2124     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
2125     worker's workers</a> of the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>
2126     object that is the <span title="script's global scope">global
2127     scope</span> of the <span title=concept-script>script</span>
2128     that invoked the constructor.</span></p>
2129    
2130     </li>
2131    
2132     <li>
2133    
2134 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="f657d98ff50fc3b7afe38630d0fddf99"><span class=en-original lang=en><a href=#run-a-worker>Run a worker</a> for <var title="">scriptURL</var>,
2135 wakaba 1.168 with the <span>script browsing context</span> of the script that
2136     invoked the method as the <var title="">owner browsing
2137 wakaba 1.191 context</var>, with the <span>origin</span> of the <span>first
2138     script</span> as the <var title="">owner origin</var>, and with
2139     <var title="">worker global scope</var> as the global scope.</span></p>
2140 wakaba 1.111
2141     </li>
2142    
2143 wakaba 1.159 </ol><p class="no-ja-translation" data-ja-hash="62d6758eaf2020c4112ab186636f4f33"><span class=en-original lang=en>This constructor must be visible when the <span>script's global
2144 wakaba 1.124 scope</span> is either a <code>Window</code> object or an object
2145     implementing the <code><a href=#workerutils>WorkerUtils</a></code> interface.</span></p>
2146 wakaba 1.133
2147     <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
2148     <span>DOM manipulation task source</span>.</span></p>
2149 wakaba 1.124
2150    
2151    
2152 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>
2153 wakaba 1.111
2154 wakaba 1.184 <pre class="idl no-ja-translation" data-ja-hash="df067416934fcebc437cc06bb53d180d"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
2155 wakaba 1.154 interface <dfn id=workerutils>WorkerUtils</dfn> {
2156     void <a href=#dom-workerglobalscope-importscripts title=dom-WorkerGlobalScope-importScripts>importScripts</a>(in DOMString... urls);
2157 wakaba 1.111 readonly attribute <a href=#worker-navigator title=worker-Navigator>Navigator</a> <a href=#dom-worker-navigator title=dom-worker-navigator>navigator</a>;
2158 wakaba 1.154 };
2159 wakaba 1.184 <a href=#workerutils>WorkerUtils</a> implement <span>WindowTimers</span>;</span></pre>
2160 wakaba 1.111
2161 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>
2162 wakaba 1.111 objects, etc) are not available to workers in this version of this
2163     specification.</span><span class=ja-translation lang=ja>DOM API (<code>Node</code> オブジェクト、 <code>Document</code>
2164     オブジェクト、その他) は、この版のこの仕様書では労働者に利用可能ではありません。</span></p>
2165    
2166    
2167 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>
2168 wakaba 1.111
2169     <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
2170     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, the user agent must run the
2171     following steps:</span></p>
2172    
2173 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
2174 wakaba 1.111 anything. Abort these steps.</span><span class=ja-translation lang=ja>引数がない場合、何も返さずに返ります。
2175     これらの段階を停止します。</span></li>
2176    
2177     <li><p class="has-ja-translation" data-ja-hash="b89818b453add85fbb5ec1e963e3072c"><span class=en-original lang=en><span title="resolve a url">Resolve</span> each
2178     argument.</span><span class=ja-translation lang=ja>各引数を<span title="resolve a url">解決</span>します。</span></li>
2179    
2180     <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>
2181     exception.</span><span class=ja-translation lang=ja>いずれかが失敗した場合、 <code>SYNTAX_ERR</code> 例外を投げます。</span></li>
2182    
2183     <!--
2184     <li><p class="has-ja-translation" data-ja-hash="952d7bd44378695378ddf1084a1c5347"><span class=en-original lang=en>If any of the resulting <span title="absolute URL">absolute
2185     URLs</span> have an <span>origin</span> that is not the <span
2186     title="same origin">same</span> as the origin of the script that
2187     invoked the method, then throw a <span>security
2188     exception</span>.</span><span class=ja-translation lang=ja>結果として得られた<span title="absolute URL">絶対
2189     URL</span>
2190     のいずれかが、メソッドを呼び出したスクリプトの<span>origin</span>と<span
2191     title="same origin">同じ</span>ではない起源を持つ場合、
2192     <span>保安性例外</span>を投げます。</span></p></li>
2193     -->
2194    
2195     <li>
2196    
2197 wakaba 1.191 <p class="no-ja-translation" data-ja-hash="ceda12bcac131823f21660a3ed405506"><span class=en-original lang=en>Attempt to <span>fetch</span> each resource identified by the
2198     resulting <span title="absolute URLs">absolute URL</span>, from
2199     the <span>first script</span>'s <span>origin</span>.</span></p> <!-- not
2200     http-origin privacy sensitive -->
2201 wakaba 1.111
2202     </li>
2203    
2204     <li>
2205    
2206     <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
2207     the first one, run these substeps:</span><span class=ja-translation lang=ja>各引数について、与えられた順に最初のものから、次の部分段階群を走らせます。</span></p>
2208    
2209 wakaba 1.159 <ol><li>
2210 wakaba 1.111
2211     <p class="has-ja-translation" data-ja-hash="a5cd8fb5d75985afdc62f7ac228329d4"><span class=en-original lang=en>Wait for the fetching attempt for the corresponding resource
2212     to complete.</span><span class=ja-translation lang=ja>対応する資源を取得しようとする試みが完了するのを待ちます。</span></p>
2213    
2214     <p class="no-ja-translation" data-ja-hash="c821b5a32a4316df06e95e2117d4d21a"><span class=en-original lang=en>If the fetching attempt failed, throw a
2215     <code>NETWORK_ERR</code> exception and abort all these
2216     steps.</span></p>
2217    
2218     <p class="no-ja-translation" data-ja-hash="a2c139226de4390d75b561512be824a7"><span class=en-original lang=en>If the attempt succeeds, then <a href=#decode-a-script-resource title="decode a script
2219     resource">decode the script resource</a> to obtain its <var title="">source</var>.</span></p>
2220    
2221     <p class="no-ja-translation" data-ja-hash="c880bce97c5a1aadccd8989fc4ec8551"><span class=en-original lang=en>Let <var title="">language</var> be JavaScript.</span></p>
2222    
2223     <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
2224     always assumed to be JavaScript, regardless of the MIME
2225     type.</span><span class=ja-translation lang=ja>労働者のスクリプトと同じく、ここでのスクリプトも、 MIME 型に関わらず常に
2226 wakaba 1.183 JavaScript であるとみなします。</span></p>
2227 wakaba 1.111
2228     </li>
2229    
2230     <li>
2231    
2232     <p class="no-ja-translation" data-ja-hash="82bb5f7207d0f40963418cf33df6325b"><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
2233     same global object, browsing context, character encoding, base
2234     URL, and script group as the <span title=concept-script>script</span> that was created by the
2235     worker's <a href=#run-a-worker>run a worker</a> algorithm.</span></p>
2236    
2237     <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
2238     returns, fails to parse, fails to catch an exception, or gets
2239     prematurely aborted by the "<a href=#kill-a-worker>kill a worker</a>" or
2240     "<a href=#terminate-a-worker>terminate a worker</a>" algorithms defined above.</span></p>
2241    
2242 wakaba 1.183 <p class="no-ja-translation" data-ja-hash="d98d7a66eb4d0626f6f7b9c1571fa6a2"><span class=en-original lang=en>If it failed to parse, then throw a <code>SyntaxError</code>
2243     exception and abort all these steps.</span></p>
2244 wakaba 1.111
2245     <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
2246     aborted, then abort all these steps, letting the exception or
2247     aborting continue to be processed by the script that called the
2248     <code title=dom-WorkerGlobalScope-importScripts><a href=#dom-workerglobalscope-importscripts>importScripts()</a></code>
2249     method.</span></p>
2250    
2251     <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
2252     worker</a>" algorithms abort the script then abort all these
2253     steps.</span></p>
2254    
2255     </li>
2256    
2257 wakaba 1.159 </ol></li>
2258 wakaba 1.156
2259 wakaba 1.159 </ol><h3 id=the-navigator-object class="no-ja-translation" data-ja-hash="6a11027ebc14ad36700f251d60a84912"><span class=en-original lang=en><span class=secno>5.2 </span>The <code title=worker-Navigator><a href=#worker-navigator>Navigator</a></code> object</span></h3>
2260 wakaba 1.111
2261     <p class="no-ja-translation" data-ja-hash="b0a33e2b5cacd5c4c5725f370211c7f4"><span class=en-original lang=en>The <dfn id=dom-worker-navigator title=dom-worker-navigator><code>navigator</code></dfn> attribute
2262     of the <code><a href=#workerutils>WorkerUtils</a></code> interface must return an instance of
2263     the <code title=worker-Navigator><a href=#worker-navigator>Navigator</a></code> interface, which
2264     represents the identity and state of the user agent (the
2265     client):</span></p>
2266    
2267 wakaba 1.154 <pre class="idl no-ja-translation" data-ja-hash="6d834a5d9279a0ac570d99b54c771186"><span class=en-original lang=en>interface <dfn id=worker-navigator title=worker-Navigator>Navigator</dfn> {};
2268     <a href=#worker-navigator title=worker-Navigator>Navigator</a> implements <span>NavigatorID</span>;
2269     <a href=#worker-navigator title=worker-Navigator>Navigator</a> implements <span>NavigatorOnLine</span>;</span></pre>
2270    
2271     <p class="no-ja-translation" data-ja-hash="f83ff867184de4dcece4621dc2c07096"><span class=en-original lang=en>Objects implementing the <code title=worker-Navigator><a href=#worker-navigator>Navigator</a></code> interface also implement
2272     the <code>NavigatorID</code> and <code>NavigatorOnLine</code>
2273     interfaces. <a href=#refsHTML5>[HTML5]</a></span></p>
2274 wakaba 1.111
2275 wakaba 1.113 <p class="note no-ja-translation" data-ja-hash="67986732437eb5b67c3e1bd21f1325a8"><span class=en-original lang=en>The <code title=worker-Navigator><a href=#worker-navigator>Navigator</a></code>
2276 wakaba 1.111 interface defined in this specification is different than the one
2277 wakaba 1.113 defined in the HTML specification.</span></p>
2278 wakaba 1.111
2279    
2280    
2281 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>
2282 wakaba 1.111
2283 wakaba 1.137 <p class="no-ja-translation" data-ja-hash="1280f8909e789b1739534938ee2d8974"><span class=en-original lang=en>The <code title=dom-opendatabase>openDatabase()</code> and
2284 wakaba 1.111 <code title=dom-opendatabase-sync>openDatabaseSync()</code>
2285 wakaba 1.137 methods are defined in the Web Database specification. <a href=#refsWEBDATABASE>[WEBDATABASE]</a></span></p>
2286 wakaba 1.111
2287    
2288    
2289 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>
2290 wakaba 1.111
2291     <p class="no-ja-translation" data-ja-hash="891d0a43200fedd7ae183f012070bb93"><span class=en-original lang=en>There must be no interface objects and constructors available in
2292     the global scope of scripts whose <span>script execution
2293     context</span> is a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object except for
2294     the following:</span></p>
2295    
2296 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
2297 wakaba 1.111 constructors defined by the XMLHttpRequest specifications, except
2298     that the <span>document response entity body</span> must always be
2299 wakaba 1.170 null. The <span><code>XMLHttpRequest</code> base URL</span> is the
2300     <span>script's base URL</span>; the
2301     <span><code>XMLHttpRequest</code> origin</span> is the script's
2302     <span>origin</span>. <a href=#refsXHR>[XHR]</a></span></li>
2303 wakaba 1.111
2304     <li><p class="no-ja-translation" data-ja-hash="dd3bea5f0bf238db87ad9fb59c7be62a"><span class=en-original lang=en>The <code>WebSocket</code> interface object and
2305     constructor. <a href=#refsWEBSOCKET>[WEBSOCKET]</a></span></li>
2306    
2307     <li><p class="no-ja-translation" data-ja-hash="bbeb4f3911ac8aedf89935a07d70106c"><span class=en-original lang=en>The <code>EventSource</code> interface object and
2308     constructor. <a href=#refsEVENTSOURCE>[EVENTSOURCE]</a></span></li>
2309    
2310     <li><p class="no-ja-translation" data-ja-hash="939ce12ed8f8d8ce1888e6c380db792c"><span class=en-original lang=en>The <code>MessageChannel</code> interface object and
2311     constructor. <a href=#refsHTML5>[HTML5]</a></span></li>
2312    
2313     <li><p class="no-ja-translation" data-ja-hash="0ca0874e3173f58421ed4537975fdd7f"><span class=en-original lang=en>The <code title=dom-Worker><a href=#dom-worker>Worker()</a></code> and <code title=dom-SharedWorker><a href=#dom-sharedworker>SharedWorker(<var title="">url</var>)</a></code> constructors.</span></li>
2314    
2315 wakaba 1.159 </ul><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>
2316 wakaba 1.111
2317     <pre class="idl no-ja-translation" data-ja-hash="8d12e26ffacf32cd9d10364c0255ab53"><span class=en-original lang=en>interface <dfn id=workerlocation>WorkerLocation</dfn> {
2318     readonly attribute DOMString <a href=#dom-workerlocation-href title=dom-WorkerLocation-href>href</a>;
2319     readonly attribute DOMString <a href=#dom-workerlocation-protocol title=dom-WorkerLocation-protocol>protocol</a>;
2320     readonly attribute DOMString <a href=#dom-workerlocation-host title=dom-WorkerLocation-host>host</a>;
2321     readonly attribute DOMString <a href=#dom-workerlocation-hostname title=dom-WorkerLocation-hostname>hostname</a>;
2322     readonly attribute DOMString <a href=#dom-workerlocation-port title=dom-WorkerLocation-port>port</a>;
2323     readonly attribute DOMString <a href=#dom-workerlocation-pathname title=dom-WorkerLocation-pathname>pathname</a>;
2324     readonly attribute DOMString <a href=#dom-workerlocation-search title=dom-WorkerLocation-search>search</a>;
2325     readonly attribute DOMString <a href=#dom-workerlocation-hash title=dom-WorkerLocation-hash>hash</a>;
2326     };</span></pre>
2327    
2328     <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
2329     URL</span> set at its creation.</span></p>
2330    
2331     <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>
2332     attribute must return the <span>absolute URL</span> that the object
2333     represents.</span></p>
2334    
2335 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
2336     of <span>URL decomposition IDL attributes</span>, <dfn id=dom-workerlocation-protocol title=dom-WorkerLocation-protocol><code>protocol</code></dfn>,
2337 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>,
2338     <dfn id=dom-workerlocation-pathname title=dom-WorkerLocation-pathname><code>pathname</code></dfn>,
2339     <dfn id=dom-workerlocation-search title=dom-WorkerLocation-search><code>search</code></dfn>,
2340     and <dfn id=dom-workerlocation-hash title=dom-WorkerLocation-hash><code>hash</code></dfn>. These must
2341 wakaba 1.172 follow the rules given for URL decomposition IDL attributes, with the
2342 wakaba 1.111 <span title=concept-uda-input>input</span> being the
2343     <span>absolute URL</span> that the object represents (same as the
2344     <code title=dom-WorkerLocation-href><a href=#dom-workerlocation-href>href</a></code> attribute), and
2345     the <span title=concept-uda-setter>common setter action</span>
2346     being a no-op, since the attributes are defined to be readonly. <a href=#refsHTML5>[HTML5]</a></span></p>
2347 wakaba 1.176
2348 wakaba 1.195 <!--START vCard--><!--START vEvent-->
2349 wakaba 1.111
2350 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-->
2351 wakaba 1.111
2352 wakaba 1.195 <!--END vCard--><!--END vEvent-->
2353 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>
2354 wakaba 1.195 <!--START vCard--><!--START vEvent-->
2355 wakaba 1.157
2356 wakaba 1.159 <dl><dt id=refsDOMCORE class="no-ja-translation" data-ja-hash="bc16cdf6ab9118cf4065dd05b4725405"><span class=en-original lang=en>[DOMCORE]</span></dt>
2357 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
2358     Object Model (DOM) Level 3 Core Specification</a></cite>, A. Le
2359     Hors, P. Le Hegaret, L. Wood, G. Nicol, J. Robie, M. Champion,
2360     S. Byrnes. W3C, April 2004.</span></dd>
2361     <!--
2362     <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
2363     DOM Core</a></cite>, S. Pieters. W3C, June 2009.</span></dd>
2364     -->
2365    
2366 wakaba 1.157 <dt id=refsDOMEVENTS class="no-ja-translation" data-ja-hash="4acfe87f4af565e925ab2c05d359f9b1"><span class=en-original lang=en>[DOMEVENTS]</span></dt>
2367     <!--
2368     <dd class="no-ja-translation" data-ja-hash="fa7c84f91358fa9f83f95423f9d0c22a"><span class=en-original lang=en><cite><a
2369     href="http://www.w3.org/TR/DOM-Level-3-Events/">Document Object
2370     Model (DOM) Level 3 Events Specification</a></cite>,
2371     B. H&ouml;hrmann, P. Le Hegaret, T. Pixley. W3C, December
2372     2007.</span></dd>
2373     -->
2374     <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
2375     Object Model (DOM) Level 3 Events Specification</a></cite>,
2376     D. Schepers. W3C, July 2009.</span></dd>
2377    
2378     <dt id=refsECMA262 class="no-ja-translation" data-ja-hash="ef033ad77bafa67936e26b8da6095aed"><span class=en-original lang=en>[ECMA262]</span></dt>
2379     <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
2380     Language Specification</a></cite>. ECMA, December 1999.</span></dd>
2381    
2382     <dt id=refsEVENTSOURCE class="no-ja-translation" data-ja-hash="e7e8ca9d7ad98af783c5437257c5ebc5"><span class=en-original lang=en>[EVENTSOURCE]</span></dt>
2383     <!--
2384     <dd class="no-ja-translation" data-ja-hash="bb55f3919043f35a4adca2f15ec20278"><span class=en-original lang=en><cite><a href="http://www.w3.org/TR/eventsource/">Server-Sent
2385     Events</a></cite>, I. Hickson. W3C, April 2009.</span></dd>
2386     -->
2387     <dd class="no-ja-translation" data-ja-hash="b9db8e13e3a07aa962a840d0f53d10ac"><span class=en-original lang=en><cite><a href=http://dev.w3.org/html5/eventsource/>Server-Sent
2388     Events</a></cite>, I. Hickson. W3C, July 2009.</span></dd>
2389    
2390     <dt id=refsHTML5 class="no-ja-translation" data-ja-hash="c8334fcd95059386411d0d14d5bdbeab"><span class=en-original lang=en>[HTML5]</span></dt>
2391     <!--
2392 wakaba 1.171 <dd class="no-ja-translation" data-ja-hash="de23a7ad9840c8df08cbc8237472b341"><span class=en-original lang=en><cite><a href="http://www.w3.org/TR/html5/">HTML5</a></cite>,
2393 wakaba 1.157 I. Hickson, D. Hyatt. W3C, April 2009.</span></dd>
2394 wakaba 1.171 <dd class="no-ja-translation" data-ja-hash="a313fc8fc4a8517dbed899bae6562d24"><span class=en-original lang=en><cite><a
2395     href="http://www.w3.org/html/wg/html5/">HTML5</a></cite>,
2396     I. Hickson, D. Hyatt. W3C, August 2009.</span></dd>
2397 wakaba 1.157 -->
2398 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>,
2399     I. Hickson. WHATWG, August 2009.</span></dd>
2400 wakaba 1.157
2401 wakaba 1.158 <dt id=refsRFC2119 class="no-ja-translation" data-ja-hash="160a6b695c5227ccd5c7beb0e6d5ec22"><span class=en-original lang=en>[RFC2119]</span></dt>
2402     <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
2403     RFCs to Indicate Requirement Levels</a></cite>, S. Bradner. IETF, March
2404     1997.</span></dd>
2405    
2406 wakaba 1.157 <dt id=refsWEBDATABASE class="no-ja-translation" data-ja-hash="f94817bc9b7ef609fd84e9f95c627302"><span class=en-original lang=en>[WEBDATABASE]</span></dt>
2407     <dd class="no-ja-translation" data-ja-hash="cc7b64af714b7157dc4f9d82981c71b3"><span class=en-original lang=en><cite><a href=http://dev.w3.org/html5/webdatabase/>Web
2408     Database</a></cite>, I. Hickson. W3C, July
2409     2009.</span></dd>
2410 wakaba 1.158
2411     <dt id=refsWEBIDL class="no-ja-translation" data-ja-hash="c36d8342bfa57c496487e73bea1fb4d2"><span class=en-original lang=en>[WEBIDL]</span></dt>
2412     <!--
2413     <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
2414     IDL</a></cite>, C. McCormack. W3C, December 2008.</span></dd>
2415     -->
2416     <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
2417     IDL</a></cite>, C. McCormack. W3C, July 2009.</span></dd>
2418 wakaba 1.157
2419     <dt id=refsWEBSOCKET class="no-ja-translation" data-ja-hash="15823683133ea3fcc5ab28cf16493c4d"><span class=en-original lang=en>[WEBSOCKET]</span></dt>
2420     <!--
2421     <dd class="no-ja-translation" data-ja-hash="0cc50f9b1853d25971b2be26d4f0751f"><span class=en-original lang=en><cite><a href="http://www.w3.org/TR/websockets/">The Web Sockets
2422     API</a></cite>, I. Hickson. W3C, April
2423     2009.</span></dd>
2424     -->
2425     <dd class="no-ja-translation" data-ja-hash="fff159651795cafc5a95a29ad79ef67c"><span class=en-original lang=en><cite><a href=http://dev.w3.org/html5/websockets/>The Web Sockets
2426     API</a></cite>, I. Hickson. W3C, August
2427     2009.</span></dd>
2428    
2429     <dt id=refsXHR class="no-ja-translation" data-ja-hash="3ba5cbb19a05fab102ccbee69603b1fc"><span class=en-original lang=en>[XHR]</span></dt>
2430     <!--
2431     <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
2432     Object</a></cite>, A. van Kesteren. W3C, April
2433     2008.</span></dd>
2434     -->
2435 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>,
2436 wakaba 1.157 A. van Kesteren. W3C, June 2009.</span></dd>
2437    
2438 wakaba 1.195 </dl><!--END vCard--><!--END vEvent--><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 -->
2439 wakaba 1.111
2440 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
2441 wakaba 1.111
2442     Aaron Boodman,
2443 wakaba 1.159 &#1040;&#1083;&#1077;&#1082;&#1089;&#1077;&#1081; &#1055;&#1088;&#1086;&#1089;&#1082;&#1091;&#1088;&#1103;&#1082;&#1086;&#1074; (Alexey Proskuryakov),
2444 wakaba 1.111 Anne van Kesteren,
2445     Ben Turner,
2446     Dmitry Titov,
2447     Drew Wilson,
2448     Jeremy Orlow,
2449     Jonas Sicking,
2450     Justin James,
2451     Kevin Hakanson,
2452     Maciej Stachowiak,
2453     Michael Nordman,
2454     Mike Smith,
2455    
2456     and
2457    
2458     Philip Taylor
2459    
2460 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>
2461 wakaba 1.111
2462     <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
2463     technology and whose experience has been a huge influence on this
2464     specification.</span><span class=ja-translation lang=ja>Gears チームの方々にも非常に感謝します。
2465     Gears チームの方々はこの技術を開拓し、その経験はこの仕様書にも多大な影響を与えています。
2466     </span></p>
2467    
2468    

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24