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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24