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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24