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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24