/[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.205 - (hide annotations) (download)
Thu Oct 22 06:24:11 2009 UTC (16 years, 8 months ago) by wakaba
Branch: MAIN
Changes since 1.204: +35 -35 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.205 <h2 class="no-num no-toc has-ja-translation" data-ja-hash="59c165703ab81d9eb9d716b2135e1387" data-ja-real-hash="ba0a597474f25ef74c6bf1717acdf81e"><span class=en-original lang=en>Draft Recommendation &mdash; 21 October 2009</span><span class=ja-translation lang=ja>勧告案<ins class=ja-note>の非公式和訳</ins> &mdash;
11     <ins class=ja-note>(原文出版日)</ins> 2009年10月21日</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 wakaba 1.203 <pre class="no-ja-translation" data-ja-hash="96676bde8a2e10817b7d76a726dc26f9"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
432 wakaba 1.111 &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 wakaba 1.203
529     worker.port.start();
530 wakaba 1.111 &lt;/script&gt;
531     &lt;/head&gt;
532     &lt;body&gt;
533     &lt;h1&gt;Viewer&lt;/h1&gt;
534     &lt;h2&gt;Map&lt;/h2&gt;
535     &lt;p&gt;&lt;canvas id="map" height=150 width=150&gt;&lt;/canvas&gt;&lt;/p&gt;
536     &lt;p&gt;
537     &lt;button type=button onclick="worker.port.postMessage('mov left')"&gt;Left&lt;/button&gt;
538     &lt;button type=button onclick="worker.port.postMessage('mov up')"&gt;Up&lt;/button&gt;
539     &lt;button type=button onclick="worker.port.postMessage('mov down')"&gt;Down&lt;/button&gt;
540     &lt;button type=button onclick="worker.port.postMessage('mov right')"&gt;Right&lt;/button&gt;
541     &lt;button type=button onclick="worker.port.postMessage('set 0')"&gt;Set 0&lt;/button&gt;
542     &lt;button type=button onclick="worker.port.postMessage('set 1')"&gt;Set 1&lt;/button&gt;
543     &lt;/p&gt;
544     &lt;h2&gt;Public Chat&lt;/h2&gt;
545     &lt;dialog id="public"&gt;&lt;/dialog&gt;
546     &lt;form onsubmit="worker.port.postMessage('txt ' + message.value); message.value = ''; return false;"&gt;
547     &lt;p&gt;
548     &lt;input type="text" name="message" size="50"&gt;
549     &lt;button&gt;Post&lt;/button&gt;
550     &lt;/p&gt;
551     &lt;/form&gt;
552     &lt;h2&gt;Private Chat&lt;/h2&gt;
553     &lt;ul id="private"&gt;&lt;/ul&gt;
554     &lt;/body&gt;
555     &lt;/html&gt;
556     </span></pre>
557    
558     <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
559     viewer is written.</span><span class=ja-translation lang=ja>表示器の書き方についていくつか注意したい重要な点があります。</span></p>
560    
561     <p class="has-ja-translation" data-ja-hash="8bc9c1f9e0e102128838ea8c31c51306"><span class=en-original lang=en><strong>Multiple listeners</strong>. Instead of a single message
562     processing function, the code here attaches multiple event
563     listeners, each one performing a quick check to see if it is
564     relevant for the message. In this example it doesn't make much
565     difference, but if multiple authors wanted to collaborate using a
566     single port to communicate with a worker, it would allow for
567     independent code instead of changes having to all be made to a
568     single event handling function.</span><span class=ja-translation lang=ja><strong>複数の聴取器</strong>。この符号では、メッセージ処理関数を1つ用意する代わりに、
569     複数の事象聴取器を付与し、それぞれが、それがメッセージに関連するかどうかを見るためにさらりと検査を行っています。
570     この例では大きな違いにはなりませんが、複数の著者が労働者と通信するために1つのポートを使って協調したい場合には、
571     独立した符号にできるので変更がある度に1つの事象取扱関数をいじらざるを得なくて済みます。</span></p>
572    
573     <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
574     unregister specific listeners when you are done with them, as is
575     done with the <code title="">configure()</code> method in this
576     example.</span></p>
577    
578     <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>
579    
580 wakaba 1.159 <pre class="no-ja-translation" data-ja-hash="2a6833ffcfe9252a21a8582ad69a4adf"><span class=en-original lang=en>
581     var nextName = 0;
582 wakaba 1.111 function getNextName() {
583     // this could use more friendly names
584     // but for now just return a number
585     return nextName++;
586     }
587    
588     var map = [
589     [0, 0, 0, 0, 0, 0, 0],
590     [1, 1, 0, 1, 0, 1, 1],
591     [0, 1, 0, 1, 0, 0, 0],
592     [0, 1, 0, 1, 0, 1, 1],
593     [0, 0, 0, 1, 0, 0, 0],
594     [1, 0, 0, 1, 1, 1, 1],
595     [1, 1, 0, 1, 1, 0, 1],
596     ];
597    
598     function wrapX(x) {
599     if (x &lt; 0) return wrapX(x + map[0].length);
600     if (x &gt;= map[0].length) return wrapX(x - map[0].length);
601     return x;
602     }
603    
604     function wrapY(y) {
605     if (y &lt; 0) return wrapY(y + map.length);
606     if (y &gt;= map[0].length) return wrapY(y - map.length);
607     return y;
608     }
609    
610     function sendMapData(callback) {
611     var data = '';
612     for (var y = viewer.y-1; y &lt;= viewer.y+1; y += 1) {
613     for (var x = viewer.x-1; x &lt;= viewer.x+1; x += 1) {
614     if (data != '')
615     data += ',';
616     data += map[y][x];
617     }
618     }
619     callback('map ' + data);
620     }
621    
622     var viewers = {};
623     onconnect = function (event) {
624     event.ports[0]._name = getNextName();
625     event.ports[0]._data = { port: event.port, x: 0, y: 0, };
626     viewers[event.ports[0]._name] = event.port._data;
627     event.ports[0].postMessage('cfg ' + name);
628     event.ports[0].onmessage = getMessage;
629     sendMapData(event.ports[0].postMessage);
630     };
631    
632     function getMessage(event) {
633     switch (event.data.substr(0, 4)) {
634     case 'mov ':
635     var direction = event.data.substr(4);
636     var dx = 0;
637     var dy = 0;
638     switch (direction) {
639     case 'up': dy = -1; break;
640     case 'down': dy = 1; break;
641     case 'left': dx = -1; break;
642     case 'right': dx = 1; break;
643     }
644     event.target._data.x = wrapX(event.target._data.x + dx);
645     event.target._data.y = wrapY(event.target._data.y + dy);
646     sendMapData(event.target.postMessage);
647     break;
648     case 'set ':
649     var value = event.data.substr(4);
650     map[event.target._data.y][event.target._data.x] = value;
651     for (var viewer in viewers)
652     sendMapData(viewers[viewer].port.postMessage);
653     break;
654     case 'txt ':
655     var name = event.target._name;
656     var message = event.data.substr(4);
657     for (var viewer in viewers)
658     viewers[viewer].port.postMessage('txt ' + name + ' ' + message);
659     break;
660     case 'msg ':
661     var party1 = event._data;
662     var party2 = viewers[event.data.substr(4).split(' ', 1)];
663     if (party2) {
664     var channel = new MessageChannel();
665     party1.port.postMessage('msg ' + party2.name, [channel.port1]);
666     party2.port.postMessage('msg ' + party1.name, [channel.port2]);
667     }
668     break;
669     }
670     }</span></pre>
671    
672     <p class="no-ja-translation" data-ja-hash="80f59a8dae1df6b25c537e5041683f5d"><span class=en-original lang=en><strong>Connecting to multiple pages</strong>. The script uses
673     the <code title=handler-SharedWorkerGlobalScope-onconnect><a href=#handler-sharedworkerglobalscope-onconnect>onconnect</a></code>
674     event listener to listen for multiple connections.</span></p>
675    
676     <p class="has-ja-translation" data-ja-hash="5ce666b6338718b46fb0dee22dbea88c"><span class=en-original lang=en><strong>Direct channels</strong>. When the worker receives a
677     "msg" message from one viewer naming another viewer, it sets up a
678     direct connection between the two, so that the two viewers can
679     communicate directly without the worker having to proxy all the
680     messages.</span><span class=ja-translation lang=ja><strong>直接通信路</strong>。労働者がある閲覧器から他の閲覧器を名指した「msg」メッセージを受信した時は、
681     両者間の直接の接続を設定し、労働者がすべてのメッセージを仲介せずとも両閲覧器が直接通信できるようにします。</span></p>
682    
683     <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>
684    
685    
686     <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>
687    
688 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>
689 wakaba 1.111
690     <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
691     performance is to split computationally expensive tasks amongst
692     multiple workers. In this example, a computationally expensive task
693     that is to be performed for every number from 1 to 10,000,000 is
694     farmed out to ten subworkers.</span></p>
695    
696     <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>
697    
698     <pre class="no-ja-translation" data-ja-hash="45b861d46157f155d38040db723bafd1"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
699     &lt;html&gt;
700     &lt;head&gt;
701     &lt;title&gt;Worker example: One-core computation&lt;/title&gt;
702     &lt;/head&gt;
703     &lt;body&gt;
704     &lt;p&gt;The highest prime number discovered so far is: &lt;output id="result"&gt;&lt;/output&gt;&lt;/p&gt;
705     &lt;script&gt;
706     var worker = new Worker('worker.js');
707     worker.onmessage = function (event) {
708     document.getElementById('result').textContent = event.data;
709     };
710     &lt;/script&gt;
711     &lt;/body&gt;
712     &lt;/html&gt;</span></pre>
713    
714     <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>
715    
716     <pre class="no-ja-translation" data-ja-hash="c2f14df3c3648ecb143c9e271b6721df"><span class=en-original lang=en>// settings
717     var num_workers = 10;
718     var items_per_worker = 1000000;
719    
720     // start the workers
721     var result = 0;
722     var pending_workers = num_workers;
723     for (var i = 0; i &lt; num_workers; i += 1) {
724     var worker = new Worker('core.js');
725     worker.postMessage(i * items_per_worker);
726     worker.postMessage((i+1) * items_per_worker);
727     worker.onmessage = storeResult;
728     }
729    
730     // handle the results
731     function storeResult(event) {
732     result += 1*event.data;
733     pending_workers -= 1;
734     if (pending_workers &lt;= 0)
735     postMessage(result); // finished!
736     }</span></pre>
737    
738     <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
739     that waits for all the subworkers to respond.</span><span class=ja-translation lang=ja>これは部分労働者を開始するループと、
740     すべての部分労働者が応答するのを待つ取扱器から成っています。</span></p>
741    
742     <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>
743    
744     <pre class="no-ja-translation" data-ja-hash="90fc569c1c634a87b725ebbe4cc1e2f4"><span class=en-original lang=en>var start;
745     onmessage = getStart;
746     function getStart(event) {
747     start = 1*event.data;
748     onmessage = getEnd;
749     }
750    
751     var end;
752     function getEnd(event) {
753     end = 1*event.data;
754     onmessage = null;
755     work();
756     }
757    
758     function work() {
759     var result = 0;
760     for (var i = start; i &lt; end; i += 1) {
761     // perform some complex calculation here
762     result += 1;
763     }
764     postMessage(result);
765     close();
766     }</span></pre>
767    
768     <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
769     for the range of numbers thus specified, and then report the result
770     back to the parent.</span><span class=ja-translation lang=ja>部分労働者は2つの事象で2つの数を受信し、指定された数の範囲の計算を行った後、
771     結果を親に報告します。
772     </span></p>
773    
774     <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>
775    
776    
777     <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>
778    
779 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>
780 wakaba 1.111
781     <p class="no-ja-translation" data-ja-hash="12371907fb7e8389f76fabaf7a5f8303"><span class=en-original lang=en>Suppose that a cryptography library is made available that
782     provides three tasks:</span></p>
783    
784 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>
785 wakaba 1.111
786     <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
787     public key and then the private key.</span></dd>
788    
789     <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>
790    
791     <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
792     first giving the public key, and the remainder giving the
793     plaintext, each of which is encrypted and then sent on that same
794     channel as the cyphertext. The user can close the port when it is
795     done encrypting content.</span></dd>
796    
797     <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>
798    
799     <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
800     first giving the private key, and the remainder giving the
801     cyphertext, each of which is decrypted and then sent on that same
802     channel as the plaintext. The user can close the port when it is
803     done decrypting content.</span></dd>
804    
805 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>
806 wakaba 1.111
807     <pre class="no-ja-translation" data-ja-hash="6c23fb6fef8f715101d908de56f2cb63"><span class=en-original lang=en>function handleMessage(e) {
808     if (e.data == "genkeys")
809     genkeys(e.ports[0]);
810     else if (e.data == "encrypt")
811     encrypt(e.ports[0]);
812     else if (e.data == "decrypt")
813     decrypt(e.ports[0]);
814     }
815    
816     function genkeys(p) {
817     var keys = _generateKeyPair();
818     p.postMessage(keys[0]);
819     p.postMessage(keys[1]);
820     }
821    
822     function encrypt(p) {
823     var key, state = 0;
824     p.onmessage = function (e) {
825     if (state == 0) {
826     key = e.data;
827     state = 1;
828     } else {
829     p.postMessage(_encrypt(key, e.data));
830     }
831     };
832     }
833    
834     function decrypt(p) {
835     var key, state = 0;
836     p.onmessage = function (e) {
837     if (state == 0) {
838     key = e.data;
839     state = 1;
840     } else {
841     p.postMessage(_decrypt(key, e.data));
842     }
843     };
844     }
845    
846     // support being used as a shared worker as well as a dedicated worker
847     if (this.onmessage) // dedicated worker
848     onmessage = handleMessage;
849     else // shared worker
850     onconnect = function (e) { e.port.onmessage = handleMessage; }
851    
852    
853     // the "crypto" functions:
854    
855     function _generateKeyPair() {
856     return [Math.random(), Math.random()];
857     }
858    
859     function _encrypt(k, s) {
860     return 'encrypted-' + k + ' ' + s;
861     }
862    
863     function _decrypt(k, s) {
864     return s.substr(s.indexOf(' ')+1);
865     }</span></pre>
866    
867     <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
868     real cryptography.</span></p>
869    
870     <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>
871    
872     <pre class="no-ja-translation" data-ja-hash="e88a411ca9b20f088116732dc0db6171"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
873     &lt;html&gt;
874     &lt;head&gt;
875     &lt;title&gt;Worker example: Crypto library&lt;/title&gt;
876     &lt;script&gt;
877     var crytoLib = new Worker('libcrypto-v1.js'); // or could use 'libcrypto-v2.js'
878     function getKeys() {
879     var state = 0;
880     cryptoLib.startConversation("genkeys").onmessage = function (e) {
881     if (state == 0)
882     document.getElementById('public').value = e.data;
883     else if (state == 1)
884     document.getElementById('private').value = e.data;
885     state += 1;
886     };
887     }
888     function enc() {
889     var port = cryptoLib.startConversation("encrypt");
890     port.postMessage(document.getElementById('public').value);
891     port.postMessage(document.getElementById('input').value);
892     port.onmessage = function (e) {
893     document.getElementById('input').value = e.data;
894     port.close();
895     };
896     }
897     function dec() {
898     var port = cryptoLib.startConversation("decrypt");
899     port.postMessage(document.getElementById('private').value);
900     port.postMessage(document.getElementById('input').value);
901     port.onmessage = function (e) {
902     document.getElementById('input').value = e.data;
903     port.close();
904     };
905     }
906     &lt;/script&gt;
907     &lt;style&gt;
908     textarea { display: block; }
909     &lt;/style&gt;
910     &lt;/head&gt;
911     &lt;body onload="getKeys()"&gt;
912     &lt;fieldset&gt;
913     &lt;legend&gt;Keys&lt;/legend&gt;
914     &lt;p&gt;&lt;label&gt;Public Key: &lt;textarea id="public"&gt;&lt;/textarea&gt;&lt;/label&gt;&lt;/p&gt;
915     &lt;p&gt;&lt;label&gt;Private Key: &lt;textarea id="private"&gt;&lt;/textarea&gt;&lt;/label&gt;&lt;/p&gt;
916     &lt;/fieldset&gt;
917     &lt;p&gt;&lt;label&gt;Input: &lt;textarea id="input"&gt;&lt;/textarea&gt;&lt;/label&gt;&lt;/p&gt;
918     &lt;p&gt;&lt;button onclick="enc()"&gt;Encrypt&lt;/button&gt; &lt;button onclick="dec()"&gt;Decrypt&lt;/button&gt;&lt;/p&gt;
919     &lt;/body&gt;
920     &lt;/html&gt;</span></pre>
921    
922     <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
923     crypto work onto subworkers. This could be done as follows:</span></p>
924    
925     <pre class="no-ja-translation" data-ja-hash="4700bd96e4f3524347953c148b483479"><span class=en-original lang=en>function handleMessage(e) {
926     if (e.data == "genkeys")
927     genkeys(e.ports[0]);
928     else if (e.data == "encrypt")
929     encrypt(e.ports[0]);
930     else if (e.data == "decrypt")
931     decrypt(e.ports[0]);
932     }
933    
934     function genkeys(p) {
935     var generator = new Worker('libcrypto-v2-generator.js');
936     generator.postMessage('', [p]);
937     }
938    
939     function encrypt(p) {
940     p.onmessage = function (e) {
941     var key = e.data;
942     var encryptor = new Worker('libcrypto-v2-encryptor.js');
943     encryptor.postMessage(key, [p]);
944     };
945     }
946    
947     function encrypt(p) {
948     p.onmessage = function (e) {
949     var key = e.data;
950     var decryptor = new Worker('libcrypto-v2-decryptor.js');
951     decryptor.postMessage(key, [p]);
952     };
953     }
954    
955     // support being used as a shared worker as well as a dedicated worker
956     if (this.onmessage) // dedicated worker
957     onmessage = handleMessage;
958     else // shared worker
959     onconnect = function (e) { e.ports[0].onmessage = handleMessage };
960     </span></pre>
961    
962     <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>
963    
964     <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>
965    
966     <pre class="no-ja-translation" data-ja-hash="7fcbde64ee437c101414bcc98d9e1ee0"><span class=en-original lang=en>onmessage = function (e) {
967     var k = _generateKeyPair();
968     e.ports[0].postMessage(k[0]);
969     e.ports[0].postMessage(k[1]);
970     close();
971     }
972    
973     function _generateKeyPair() {
974     return [Math.random(), Math.random()];
975     }</span></pre>
976    
977     <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>
978    
979     <pre class="no-ja-translation" data-ja-hash="94aaf906f90e9b3539c4219ef2be60cf"><span class=en-original lang=en>onmessage = function (e) {
980     var key = e.data;
981     e.ports[0].onmessage = function (e) {
982     var s = e.data;
983     postMessage(_encrypt(key, s));
984     }
985     }
986    
987     function _encrypt(k, s) {
988     return 'encrypted-' + k + ' ' + s;
989     }</span></pre>
990    
991     <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>
992    
993     <pre class="no-ja-translation" data-ja-hash="c91e2f3055da293b534ac3c10648b23e"><span class=en-original lang=en>onmessage = function (e) {
994     var key = e.data;
995     e.ports[0].onmessage = function (e) {
996     var s = e.data;
997     postMessage(_decrypt(key, s));
998     }
999     }
1000    
1001     function _decrypt(k, s) {
1002     return s.substr(s.indexOf(' ')+1);
1003     }</span></pre>
1004    
1005 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
1006     is happening &mdash; the API hasn't changed; the library can
1007 wakaba 1.111 delegate to subworkers without changing its API, even though it is
1008     accepting data using message channels.</span></p>
1009    
1010     <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>
1011    
1012    
1013    
1014    
1015     <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>
1016    
1017     <p class="has-ja-translation" data-ja-hash="8b0f72fe04577949924ab1e2997e0d8b"><span class=en-original lang=en>All diagrams, examples, and notes in this specification are
1018     non-normative, as are all sections explicitly marked non-normative.
1019     Everything else in this specification is normative.</span><span class=ja-translation lang=ja>この仕様書のすべての図、例示、注意書き、ならびに規定の一部ではないと明記したすべての節は、
1020     規定の一部ではありません。
1021     この仕様書のそれ以外の部分はすべて規定の一部です。</span></p>
1022    
1023     <p class="has-ja-translation" data-ja-hash="8adc9958d29b879426b71b5b9eae46db"><span class=en-original lang=en>The key words "MUST", "MUST NOT", "REQUIRED", <!--"SHALL", "SHALL
1024     NOT",--> "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
1025     "OPTIONAL" in the normative parts of this document are to be
1026     interpreted as described in RFC2119. For readability, these words do
1027     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>」、
1028     「<em class=rfc2119 title="MUST NOT">してはなりません</em>」、
1029     「<em class=rfc2119 title="REQUIRED">必須です</em>」、<!--"SHALL", "SHALL
1030     NOT",-->「<em class=rfc2119 title="SHOULD">するべきです</em>」、
1031     「<em class=rfc2119 title="SHOULD NOT">するべきではありません</em>」、
1032     「<em class=rfc2119 title="RECOMMENDED">推奨します</em>」、「<em class=rfc2119 title="MAY">して構いません</em>」、
1033     「<em class=rfc2119 title="OPTIONAL">任意です</em>」は、 RFC 2119 で説明されているように解釈します。
1034     この仕様書<ins class=ja-note>の原文</ins>では、
1035     可読性の観点から、
1036     これらの語<ins class=ja-note>の原語</ins>のすべて大文字による表記は行っていません。
1037     <a href=#refsRFC2119>[RFC2119]</a></span></p>
1038    
1039     <p class="has-ja-translation" data-ja-hash="63dc4357c416e0e0f292a5f662ca71ab"><span class=en-original lang=en>Requirements phrased in the imperative as part of algorithms
1040     (such as "strip any leading space characters" or "return false and
1041     abort these steps") are to be interpreted with the meaning of the
1042     key word ("must", "should", "may", etc) used in introducing the
1043     algorithm.</span><span class=ja-translation lang=ja>算法の一部として<ins class=ja-note>動作の指示の形で (原文では</ins>命令形で<ins class=ja-note>) </ins>記述された要件
1044     (例えば「先頭の間隔文字をすべて除去します」や「偽を返し、これらの段階を停止します」)
1045     は、算法を紹介するに当たって使われたキーワード (<em class=rfc2119 title="MUST">しなければなりません</em>、
1046     <em class=rfc2119 title="SHOULD">するべきです</em>、<em class=rfc2119 title="MAY">して構いません</em>など) の意味により解釈します。</span></p>
1047    
1048     <p class="has-ja-translation" data-ja-hash="a5a0db584980ce3f2448983d6188b2d1"><span class=en-original lang=en>Some conformance requirements are phrased as requirements on
1049     attributes, methods or objects. Such requirements are to be
1050     interpreted as requirements on user agents.</span><span class=ja-translation lang=ja>いくつかの適合性要件は属性やメソッドやオブジェクトの要件として説明されています。
1051     そのような要件は、利用者エージェントに関する要件として解釈します。</span></p>
1052    
1053     <p class="has-ja-translation" data-ja-hash="27386c326b98d878b3c408c60b6095b0"><span class=en-original lang=en>Conformance requirements phrased as algorithms or specific steps
1054     may be implemented in any manner, so long as the end result is
1055     equivalent. (In particular, the algorithms defined in this
1056     specification are intended to be easy to follow, and not intended to
1057     be performant.)</span><span class=ja-translation lang=ja>算法や特定の段階として説明されている適合性要件は、
1058     最終的な結果が等価である限り、任意の方法で実装して<em class=rfc2119 title="MAY">構いません</em>。
1059     (特に、この仕様書で定義されている算法は追うのを簡単にしており、
1060     高性能であることを目指してはいません。)</span></p>
1061    
1062     <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
1063     agents.</span><span class=ja-translation lang=ja>この仕様書で定義する唯一の適合性の級は利用者エージェントです。</span></p>
1064    
1065     <p class="has-ja-translation" data-ja-hash="57959e6c42e8d5141b11e501bf60cc2f"><span class=en-original lang=en>User agents may impose implementation-specific limits on
1066     otherwise unconstrained inputs, e.g. to prevent denial of service
1067     attacks, to guard against running out of memory, or to work around
1068     platform-specific limitations.</span><span class=ja-translation lang=ja>利用者エージェントは、サービス拒否攻撃を防ぐため、
1069     記憶容量を使い尽くすことを防ぐため、
1070     あるいは環境特有の制限に対応するためなどの目的で、
1071     別段の制約のない入力に対して実装特有の制限を設けて<em class=rfc2119 title="MAY">構いません</em>。</span></p>
1072    
1073    
1074 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>
1075 wakaba 1.111
1076     <p class="has-ja-translation" data-ja-hash="8dc27a34324d9e41d25c6bbbc2d2551c"><span class=en-original lang=en>This specification relies on several other underlying
1077     specifications.</span><span class=ja-translation lang=ja>この仕様書は、他のいくつかの下位の仕様書に依存しています。</span></p>
1078    
1079 wakaba 1.159 <dl><dt class="no-ja-translation" data-ja-hash="6bff62b10d884fb77428cfe168cd783d"><span class=en-original lang=en>HTML5</span></dt>
1080 wakaba 1.111
1081     <dd>
1082    
1083     <p class="has-ja-translation" data-ja-hash="99d7a97f59faf316f6125ad288390f21"><span class=en-original lang=en>Many fundamental concepts from HTML5 are used by this
1084     specification. <a href=#refsHTML5>[HTML5]</a></span><span class=ja-translation lang=ja>この仕様書では、 HTML5 の多くの基礎的な概念を使用します。
1085     <a href=#refsHTML5>[HTML5]</a></span></p>
1086    
1087     </dd>
1088    
1089     <dt class="no-ja-translation" data-ja-hash="21838f6e93b1a2157b16dcb6281ff225"><span class=en-original lang=en>WebIDL</span></dt>
1090    
1091     <dd>
1092    
1093 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
1094     WebIDL specification. <a href=#refsWEBIDL>[WEBIDL]</a></span></p>
1095 wakaba 1.111
1096     </dd>
1097    
1098 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>
1099 wakaba 1.111
1100     <p class="has-ja-translation" data-ja-hash="f99630e4a7f12f2c4ecb88e02bf4a644"><span class=en-original lang=en>The construction "a <code title="">Foo</code> object", where
1101     <code title="">Foo</code> is actually an interface, is sometimes
1102     used instead of the more accurate "an object implementing the
1103     interface <code title="">Foo</code>".</span><span class=ja-translation lang=ja>「<code title="">Foo</code> オブジェクト」という構文 (<code title="">Foo</code>
1104     は実際には界面) を時々使いますが、より正確な「界面 <code title="">Foo</code>
1105     を実装しているオブジェクト」の代わりに用いています。</span></p>
1106    
1107 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
1108 wakaba 1.111 scripts in Web applications, and does not necessarily imply the
1109     existence of an actual <code>Document</code> object or of any other
1110     <code>Node</code> objects as defined in the DOM Core
1111 wakaba 1.158 specifications. <a href=#refsDOMCORE>[DOMCORE]</a></span></p>
1112 wakaba 1.111
1113 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
1114 wakaba 1.111 being retrieved (e.g. by author script), and is said to be
1115 wakaba 1.183 <em>setting</em> when a new value is assigned to it.</span></p>
1116 wakaba 1.111
1117     <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
1118     the official term ECMAScript, since the term JavaScript is more
1119     widely known. <a href=#refsECMA262>[ECMA262]</a></span></p>
1120    
1121    
1122 wakaba 1.139 <h2 id=infrastructure class="has-ja-translation" data-ja-hash="cba4f4cee5c6a3e6d8be8da68fa1234e"><span class=en-original lang=en><span class=secno>4 </span>Infrastructure</span><span class=ja-translation lang=ja><span class=secno>4 </span>基盤</span></h2>
1123 wakaba 1.111
1124     <p class="no-ja-translation" data-ja-hash="f38a96d03c61f343169a402b5c779db8"><span class=en-original lang=en>There are two kinds of workers; dedicated workers, and shared
1125     workers. Dedicated workers, once created, and are linked to their
1126     creator; but message ports can be used to communicate from a
1127     dedicated worker to multiple other browsing contexts or
1128     workers. Shared workers, on the other hand, are named, and once
1129     created any script running in the same <span>origin</span> can
1130     obtain a reference to that worker and communicate with it.</span></p>
1131    
1132    
1133 wakaba 1.139 <h3 id=the-global-scope class="has-ja-translation" data-ja-hash="16d7670f16b3aaf6130252e8f11702eb"><span class=en-original lang=en><span class=secno>4.1 </span>The global scope</span><span class=ja-translation lang=ja><span class=secno>4.1 </span>大域作用域</span></h3>
1134 wakaba 1.111
1135     <p class="has-ja-translation" data-ja-hash="216dee088449fef485a489ea8a7432f4"><span class=en-original lang=en>The global scope is the "inside" of a worker.</span><span class=ja-translation lang=ja>大域作用域は労働者の「内側」です。</span></p>
1136    
1137 wakaba 1.139 <h4 id=the-workerglobalscope-abstract-interface class="has-ja-translation" data-ja-hash="fe5227371e801f4ac588d0d07472a900" data-ja-real-hash="be491e4df478a7115eae60853f3c23aa"><span class=en-original lang=en><span class=secno>4.1.1 </span>The <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> abstract interface</span><span class=ja-translation lang=ja><span class=secno>4.1.1 </span><code><a href=#workerglobalscope>WorkerGlobalScope</a></code> 抽象界面</span></h4>
1138 wakaba 1.111
1139 wakaba 1.184 <pre class="idl no-ja-translation" data-ja-hash="d9cd48b2a099afc1664485c2bce9e8b6"><span class=en-original lang=en>interface <dfn id=workerglobalscope>WorkerGlobalScope</dfn> {
1140 wakaba 1.111 readonly attribute <a href=#workerglobalscope>WorkerGlobalScope</a> <a href=#dom-workerglobalscope-self title=dom-WorkerGlobalScope-self>self</a>;
1141     readonly attribute <a href=#workerlocation>WorkerLocation</a> <a href=#dom-workerglobalscope-location title=dom-WorkerGlobalScope-location>location</a>;
1142    
1143     void <a href=#dom-workerglobalscope-close title=dom-WorkerGlobalScope-close>close</a>();
1144 wakaba 1.137 <!-- v2-onclose attribute <span>Function</span> <span title="handler-WorkerGlobalScope-onclose">onclose</span>;
1145     --> attribute <span>Function</span> <a href=#handler-workerglobalscope-onerror title=handler-WorkerGlobalScope-onerror>onerror</a>;
1146 wakaba 1.154 };
1147 wakaba 1.184 <a href=#workerglobalscope>WorkerGlobalScope</a> implements <a href=#workerutils>WorkerUtils</a>;
1148     <a href=#workerglobalscope>WorkerGlobalScope</a> implements <span>EventTarget</span>;</span></pre>
1149 wakaba 1.111
1150     <p class="no-ja-translation" data-ja-hash="0a5104552951765122b762e943a821b0"><span class=en-original lang=en>The <dfn id=dom-workerglobalscope-self title=dom-WorkerGlobalScope-self><code>self</code></dfn> attribute
1151     must return the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object itself.</span></p>
1152    
1153 wakaba 1.112 <p class="no-ja-translation" data-ja-hash="e48d78d83311d57328ab69a17167fffc"><span class=en-original lang=en>The <dfn id=dom-workerglobalscope-location title=dom-WorkerGlobalScope-location><code>location</code></dfn>
1154 wakaba 1.111 attribute must return the <code><a href=#workerlocation>WorkerLocation</a></code> object created
1155     for the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object when the worker was
1156     created. It represents the <span>absolute URL</span> of the script
1157 wakaba 1.112 that was used to initialize the worker, after any redirects.</span></p>
1158 wakaba 1.111
1159 wakaba 1.159 <hr><p class="no-ja-translation" data-ja-hash="c205c04fbfcc56617b82329c66dbda4a"><span class=en-original lang=en>When a script invokes the <dfn id=dom-workerglobalscope-close title=dom-WorkerGlobalScope-close><code>close()</code></dfn>
1160 wakaba 1.111 method on a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, the user agent
1161     must run the following steps (atomically):</span></p>
1162    
1163 wakaba 1.159 <ol><li><p class="no-ja-translation" data-ja-hash="af4d5ddb9edfb1a69b29ed3140620794"><span class=en-original lang=en>Discard any <span title=concept-task>tasks</span> that
1164 wakaba 1.111 have been added to the <span>event loop</span>'s <span title="task
1165     queue">task queues</span>.</span></p>
1166    
1167     <!-- v2-onclose
1168 wakaba 1.195 <li><p class="no-ja-translation" data-ja-hash="38810e04c906ff1907d4cd0641948aab"><span class=en-original lang=en><span>Queue a task</span> to <span>fire a simple
1169     event</span> named <code title="event-close">close</code> at the
1170 wakaba 1.111 <code>WorkerGlobalScope</code> object.</span></p></li>
1171     -->
1172    
1173     <li><p class="no-ja-translation" data-ja-hash="1e713e7163b783674600c93aed418557"><span class=en-original lang=en>Set the worker's <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object's
1174     <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to
1175     true. (This prevents any further tasks from being queued.)</span></li>
1176    
1177     <li><p class="no-ja-translation" data-ja-hash="37da2c132b44ba85602699d1ef93c598"><span class=en-original lang=en>Disentangle all the ports in the list of <a href="#the-worker's-ports">the worker's
1178     ports</a>.</span></li>
1179    
1180 wakaba 1.191 </ol><p class="no-ja-translation" data-ja-hash="11fd57fd42153141cd3d7fc2b6979e1b"><span class=en-original lang=en>The following are the <span>event handlers</span> (and their
1181     corresponding <span title="event handler event type">event handler
1182     event types</span>) that must be supported, as IDL attributes, by
1183     objects implementing the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>
1184     interface:</span></p>
1185 wakaba 1.111
1186 wakaba 1.191 <table><thead><tr><th class="no-ja-translation" data-ja-hash="46dae5ae74433c86ed36cf8244812e71"><span class=en-original lang=en><span title="event handlers">Event handler</span> </span><th class="no-ja-translation" data-ja-hash="3fc98eebba71602c62d8b2fd74645dc9"><span class=en-original lang=en><span>Event handler event type</span>
1187 wakaba 1.159 </span><tbody><!-- v2-onclose <tr><td class="no-ja-translation" data-ja-hash="8299f4100f9c690ddf7935714f58b453"><span class=en-original lang=en><dfn title="handler-WorkerGlobalScope-onclose"><code>onclose</code></dfn> </span><td class="no-ja-translation" data-ja-hash="e899358e829911a25c083ed9bc6519e6"><span class=en-original lang=en> <code title="event-close">close</code> --></span><tr><td class="no-ja-translation" data-ja-hash="08a21be8031dd240d32ac8ab2b17a9ac"><span class=en-original lang=en><dfn id=handler-workerglobalscope-onerror title=handler-WorkerGlobalScope-onerror><code>onerror</code></dfn> </span><td class="no-ja-translation" data-ja-hash="bf1b78c16e7c3a3de662d83f487bffff"><span class=en-original lang=en> <code title=event-error>error</code>
1188     </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>
1189 wakaba 1.111
1190 wakaba 1.188 <pre class="idl no-ja-translation" data-ja-hash="77cfd043067c77163e5f8886b3e13e12"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
1191 wakaba 1.154 interface <dfn id=dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
1192 wakaba 1.188 void <a href=#dom-dedicatedworkerglobalscope-postmessage title=dom-DedicatedWorkerGlobalScope-postMessage>postMessage</a>(in any message, in optional <span>MessagePortArray</span> ports);<!--
1193 wakaba 1.111 <span>MessagePort</span> <span title="dom-DedicatedWorkerGlobalScope-startConversation">startConversation</span>(in any message);-->
1194 wakaba 1.137 attribute <span>Function</span> <a href=#handler-dedicatedworkerglobalscope-onmessage title=handler-DedicatedWorkerGlobalScope-onmessage>onmessage</a>;
1195 wakaba 1.111 };</span></pre>
1196    
1197     <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
1198     had an implicit <code>MessagePort</code> associated with them. This
1199     port is part of a channel that is set up when the worker is created,
1200     but it is not exposed. This object must never be garbage collected
1201     before the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span></p>
1202    
1203     <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
1204     at the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span></p>
1205    
1206     <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><!--
1207     and <dfn
1208     title="dom-DedicatedWorkerGlobalScope-startConversation"><code>startConversation()</code></dfn>-->
1209     method<!--s (startConversation)--> on
1210     <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> objects must act as if, when
1211     invoked, it<!--/they (startConversation)--> immediately invoked the
1212     method of the same name on the port, with the same arguments, and
1213     returned the same return value.</span></p>
1214    
1215 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
1216     corresponding <span title="event handler event type">event handler
1217     event types</span>) that must be supported, as IDL attributes, by
1218     objects implementing the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code>
1219     interface:</span></p>
1220 wakaba 1.111
1221 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>
1222 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>
1223 wakaba 1.204 </span></table><p class="no-ja-translation" data-ja-hash="0b21e2810d6cf7fe860324377bffd741"><span class=en-original lang=en>For the purposes of the <span>application cache</span> networking
1224     model, a dedicated worker is an extension of the <span>cache
1225     host</span> from which it was created.</span></p>
1226 wakaba 1.111
1227    
1228    
1229 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>
1230 wakaba 1.111
1231 wakaba 1.200 <pre class="idl no-ja-translation" data-ja-hash="6b77d85a80a9793487a476146ebf79ed"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
1232 wakaba 1.154 interface <dfn id=sharedworkerglobalscope>SharedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
1233 wakaba 1.111 readonly attribute DOMString <a href=#dom-sharedworkerglobalscope-name title=dom-SharedWorkerGlobalScope-name>name</a>;
1234 wakaba 1.200 readonly attribute <span>ApplicationCache</span> <span title=dom-SharedWorkerGlobalScope-applicationCache>applicationCache</span>;
1235 wakaba 1.137 attribute <span>Function</span> <a href=#handler-sharedworkerglobalscope-onconnect title=handler-SharedWorkerGlobalScope-onconnect>onconnect</a>;
1236 wakaba 1.111 };</span></pre>
1237    
1238     <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
1239     their global object for each connection.</span><span class=ja-translation lang=ja>共有労働者は、各接続について大域オブジェクトの <code
1240     title=event-WorkerGlobalScope-connect>connect</code> 事象を通じてメッセージ・ポートを受信します。</span></p>
1241    
1242     <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>
1243     attribute must return the value it was assigned when the
1244     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object was created by the
1245     "<a href=#run-a-worker>run a worker</a>" algorithm. Its value represents the name
1246     that can be used to obtain a reference to the worker using the
1247     <code><a href=#sharedworker>SharedWorker</a></code> constructor.</span></p>
1248    
1249 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
1250     corresponding <span title="event handler event type">event handler
1251     event types</span>) that must be supported, as IDL attributes, by
1252     objects implementing the <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>
1253     interface:</span></p>
1254 wakaba 1.111
1255 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>
1256 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>
1257 wakaba 1.204 </span></table><p class="no-ja-translation" data-ja-hash="8af726c2983bb9fc0a17514c08ab4a6d"><span class=en-original lang=en>For the purposes of the <span>application cache</span> networking
1258     model, a shared worker is its own <span>cache host</span>. The
1259     <a href=#run-a-worker>run a worker</a> algorithm takes care of associating the
1260     worker with an <span>application cache</span>.</span></p>
1261 wakaba 1.111
1262 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>
1263 wakaba 1.111 attribute returns the <code>ApplicationCache</code> object for the
1264     worker.</span></p><!-- normative conf criteria is in the appcache section
1265     -->
1266    
1267    
1268 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>
1269 wakaba 1.111
1270     <p class="no-ja-translation" data-ja-hash="5d71247ae9c7e88e4244d78062ed4760"><span class=en-original lang=en>Both the <span>origin</span> and <span>effective script
1271     origin</span> of scripts running in workers are the
1272     <span>origin</span> of the <span>absolute URL</span> given in that
1273     the worker's <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
1274     represents.</span></p>
1275    
1276    
1277    
1278 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>
1279 wakaba 1.111
1280 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
1281     loop</span> distinct from those defined for <span title="unit of
1282     related similar-origin browsing contexts">units of related
1283     similar-origin browsing contexts</span>. This <span>event
1284     loop</span> has no associated <span>browsing context</span>, and its
1285     <span title="task queue">task queues</span> only have events,
1286     callbacks, and networking activity as <span title=concept-task>tasks</span>. The processing model of these
1287     <span title="event loop">event loops</span> is defined below in the
1288     <a href=#run-a-worker>run a worker</a> algorithm.</span></p>
1289 wakaba 1.111
1290     <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
1291     initially be false, but which can get set to true by the algorithms
1292     in the processing model section below.</span></p>
1293    
1294 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
1295 wakaba 1.111 true, the <span>event loop</span>'s <span title="task queue">task
1296     queues</span> must discard any further <span title=concept-task>tasks</span> that would be added to them (tasks
1297 wakaba 1.190 already on the queue are unaffected except where otherwise
1298 wakaba 1.111 specified). Effectively, once the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is true,
1299     timers stop firing, notifications for all pending asynchronous
1300     operations are dropped, etc.</span></p>
1301    
1302    
1303 wakaba 1.133
1304 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>
1305 wakaba 1.111
1306     <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
1307     <code>MessagePort</code> objects.</span><span class=ja-translation lang=ja>労働者は、メッセージ通信路とその <code>MessagePort</code>
1308     オブジェクトを通じて、他の労働者や閲覧文脈と通信します。</span></p>
1309    
1310     <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
1311     scope</var> has a list of <dfn id="the-worker's-ports">the worker's ports</dfn>, which
1312     consists of all the <code>MessagePort</code> objects that are
1313     entangled with another port and that have one (but only one) port
1314     owned by <var title="">worker global scope</var>. This list includes
1315     <!--all the <code>MessagePort</code> objects that are in events
1316     pending in the <span>event loop</span>, as well as (commented out
1317     because in practice it makes no difference either way as far as I
1318     can tell, and it would be hard to strictly implement since these
1319     ports might not yet be across the thread boundary)--> the implicit
1320     <code>MessagePort</code> in the case of <a href=#dedicatedworkerglobalscope title=DedicatedWorkerGlobalScope>dedicated workers</a>.</span></p>
1321    
1322     <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
1323     worker's workers</dfn>. Initially this list is empty; it is
1324     populated when the worker creates or obtains further workers.</span></p>
1325    
1326     <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
1327     <dfn id="the-worker's-documents">the worker's <code>Document</code>s</dfn>. Initially this list
1328     is empty; it is populated when the worker is created.</span></p>
1329    
1330     <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
1331     worker's <code>Document</code>s</dfn>, the user agent must, for each
1332     worker in the list of <a href="#the-worker's-workers">the worker's workers</a> whose list
1333     of <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> does not contain
1334     <var title="">d</var>, <a href="#add-a-document-to-the-worker's-documents" title="add a document to the worker's
1335     documents">add <var title="">d</var> to <var title="">q</var>'s
1336     <code>WorkerGlobalScope</code> owner's list of <span>the worker's
1337     <code>Document</code>s</span></a>.</span></p> <!-- suggestions welcome
1338     on making this sentence into understandable English -->
1339    
1340     <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
1341     Document">discarded</span>, it must be removed from the list of
1342     <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> of each worker
1343     whose list contains that <code>Document</code>.</span></p>
1344    
1345 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="6dd988d790ec2b4c2000cb8c571a5a33"><span class=en-original lang=en>Given a <span>script's global object</span> <var title="">o</var>
1346 wakaba 1.111 when creating or obtaining a worker, the <dfn id=list-of-relevant-document-objects-to-add>list of relevant
1347     <code>Document</code> objects to add</dfn> depends on the type of
1348     <var title="">o</var>. If <var title="">o</var> is a
1349     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object (i.e. if we are creating a
1350     nested worker), then the relevant <code>Document</code>s are the
1351     <code>Document</code>s that are in <var title="">o</var>'s own list
1352     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
1353     <code>Document</code> is just the <code>Document</code> that is the
1354     <span>active document</span> of the <code>Window</code> object <var title="">o</var>.</span></p>
1355    
1356 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
1357 wakaba 1.111 list of <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> is not
1358     empty.</span></p>
1359    
1360     <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
1361     <a href=#permissible-worker>permissible worker</a> and either it has outstanding
1362     timers, database transactions, or network connections, or its list
1363     of <a href="#the-worker's-ports">the worker's ports</a> is not empty, or its
1364     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> is actually a
1365     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object (i.e. the worker is a
1366     shared worker).</span></p>
1367    
1368     <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
1369     of the <code>Document</code> objects in <a href="#the-worker's-documents">the worker's
1370     <code>Document</code>s</a> are <span>fully active</span>.</span></p>
1371    
1372     <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
1373     not an <a href=#active-needed-worker>active needed worker</a> but it is a
1374     <a href=#permissible-worker>permissible worker</a>.</span></p>
1375    
1376    
1377 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>
1378 wakaba 1.111
1379 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
1380     <span>URL</span> <var title="">url</var>, a browsing context <var title="">owner browsing context</var>, an origin <var title="">owner
1381     origin</var>, and with global scope <var title="">worker global
1382     scope</var>, it must run the following steps:</span></p>
1383 wakaba 1.111
1384 wakaba 1.159 <ol><li>
1385 wakaba 1.111
1386     <p class="no-ja-translation" data-ja-hash="699e58187adc9ee37990500a66c83a8f"><span class=en-original lang=en>Create a completely separate and parallel execution environment
1387     (i.e. a separate thread or process or equivalent construct), and
1388     run the rest of these steps asynchronously in that context.</span></p>
1389    
1390     </li>
1391    
1392     <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
1393     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object (i.e. the worker is a
1394     shared worker), and there are any <span title="relevant application
1395     cache">relevant application caches</span> that are identified by a
1396     manifest URL with the <span>same origin</span> as <var title="">url</var> and that have <var title="">url</var> as one of
1397     their entries, <em>not</em> excluding entries marked as <span title=concept-appcache-foreign>foreign</span>, then associate the
1398     <var title="">worker global scope</var> with the <span title=concept-appcache-selection>most appropriate application
1399     cache</span> of those that match.</span></li>
1400    
1401     <li>
1402    
1403 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>
1404     <!-- not http-origin privacy sensitive -->
1405 wakaba 1.111
1406 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
1407 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
1408     origin</span> as the original <var title="">url</var>), then for
1409     each <code><a href=#worker>Worker</a></code> or <code><a href=#sharedworker>SharedWorker</a></code> object
1410     associated with <var title="">worker global scope</var>,
1411     <span>queue a task</span> to <span>fire a simple event</span>
1412 wakaba 1.195 named <code title=event-error>error</code> at that
1413 wakaba 1.112 object. Abort these steps.</span></p>
1414 wakaba 1.111
1415 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
1416     Unicode by assuming it was encoded as UTF-8, to obtain its <var title="">source</var>.</span></p>
1417 wakaba 1.111
1418     <p class="no-ja-translation" data-ja-hash="c880bce97c5a1aadccd8989fc4ec8551"><span class=en-original lang=en>Let <var title="">language</var> be JavaScript.</span></p>
1419    
1420     <p class="note has-ja-translation" data-ja-hash="5ba762159d9de3f8bd326fe0bcfac206"><span class=en-original lang=en>As with <code>script</code> elements, the MIME
1421     type of the script is ignored. Unlike with <code>script</code>
1422     elements, there is no way to override the type. It's always
1423     assumed to be JavaScript.</span><span class=ja-translation lang=ja><code>script</code> 要素と同様に、スクリプトの MIME 型は無視します。
1424     <code>script</code> 要素とは異なり、
1425     型を上書きする方法はありません。スクリプトは常に JavaScript
1426 wakaba 1.183 と仮定します。</span></p>
1427 wakaba 1.111
1428     </li>
1429    
1430     <li>
1431    
1432     <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
1433     created, as follows.</span></p>
1434    
1435     <p class="no-ja-translation" data-ja-hash="2dfcd0f76cde607de6cc88d70f390825"><span class=en-original lang=en>Create a new <span>script execution environment</span>
1436     set up as appropriate for the scripting language <var title="">language</var>.</span></p>
1437    
1438     <p class="no-ja-translation" data-ja-hash="fdf8b5f9ba18a31a8f48670142f51442"><span class=en-original lang=en>Parse/compile/initialize <var title="">source</var> using that
1439     <span>script execution environment</span>, as appropriate for <var title="">language</var>, and thus obtain a <span>list of code
1440     entry-points</span>; set the <i>initial code entry-point</i> to
1441     the entry-point for any executable code to be immediately run.</span></p>
1442    
1443     <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>
1444    
1445     <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>
1446    
1447     <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
1448     UTF-8. (This is just used for encoding non-ASCII characters in the
1449     query component of URLs.)</span></p>
1450    
1451     <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>
1452    
1453     </li>
1454    
1455     <li>
1456    
1457 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
1458 wakaba 1.111 worker such that no sooner than it stops being either a
1459     <a href=#protected-worker>protected worker</a> or a <a href=#suspendable-worker>suspendable
1460     worker</a>, and no later than it stops being a
1461     <a href=#permissible-worker>permissible worker</a>, <var title="">worker global
1462     scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is set
1463     to true<!-- v2-onclose and <span title="queue a task">a task is
1464 wakaba 1.195 queued</span> to <span>fire a simple event</span> named <code
1465 wakaba 1.111 title="event-close">close</code> at <var title="">worker global
1466     scope</var>-->.</span></p>
1467    
1468     </li>
1469    
1470     <li>
1471    
1472     <p class="no-ja-translation" data-ja-hash="24a8fa04f32239e0dafc1e98e466d6b4"><span class=en-original lang=en><strong>Suspending workers</strong>: Start monitoring the
1473     worker, such that whenever <var title="">worker global
1474     scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is false
1475     and the worker is a <a href=#suspendable-worker>suspendable worker</a>, the user
1476     agent suspends execution of script in that worker until such time
1477     as either the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag switches
1478     to true or the worker stops being a <a href=#suspendable-worker>suspendable
1479     worker</a>.</span></p>
1480    
1481     </li>
1482    
1483     <li>
1484    
1485     <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
1486     <span title=concept-script>script</span>'s <i>initial code
1487     entry-point</i>, and let that run until it either returns, fails
1488     to catch an exception, or gets prematurely aborted by the
1489     "<a href=#kill-a-worker>kill a worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>"
1490     algorithms defined below.</span></p>
1491    
1492 wakaba 1.151 <!-- v2-onclose
1493     <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
1494     worker</span>" algorithm, then that same algorithm will cause
1495     there to only be a single <span title="concept-task">task</span>
1496 wakaba 1.111 in the <span>event loop</span> at the next step, namely the task
1497 wakaba 1.151 for the <code title="message-close">close</code> event. The
1498     "<span>terminate a worker</span>" algorithm removes all the
1499 wakaba 1.111 events.</span></p>
1500 wakaba 1.151 -->
1501 wakaba 1.111
1502     </li>
1503    
1504     <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
1505     <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the worker is
1506     a dedicated worker), then enable the <span>port message
1507     queue</span> of the worker's implicit port.</span></li>
1508    
1509     <li>
1510    
1511     <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
1512     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
1513     to true.</span></p>
1514    
1515     </li>
1516    
1517     <li>
1518    
1519     <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
1520     <span title="task queue">task queues</span>, if any. The user
1521     agent may pick any <span>task queue</span>.</span></p>
1522    
1523     <p class="note no-ja-translation" data-ja-hash="2a401c207ed88f5206b2eb8a90fc91a6"><span class=en-original lang=en>The handling of events or the execution of
1524     callbacks might get prematurely aborted by the "<a href=#kill-a-worker>kill a
1525     worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>" algorithms
1526     defined below.</span></p>
1527    
1528     </li>
1529    
1530     <li>
1531    
1532     <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
1533     <span>task queue</span>.</span></p>
1534    
1535     </li>
1536    
1537     <li>
1538    
1539     <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
1540     <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
1541     to false, then jump back to the step above labeled <i>event
1542     loop</i>.</span></p>
1543    
1544     </li>
1545    
1546     <li>
1547    
1548     <p class="no-ja-translation" data-ja-hash="fb906768fcbbd4867b29825a7893fe6e"><span class=en-original lang=en>If there are any outstanding transactions that have callbacks
1549     that involve <span title=concept-script>scripts</span> whose
1550     <span title="script's global object">global object</span> is the
1551     <var title="">worker global scope</var>, roll them back (without
1552     invoking any of the callbacks).</span></p>
1553    
1554     </li>
1555    
1556     <li>
1557    
1558     <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
1559     of active timeouts</span> and its <span>list of active
1560     intervals</span>.</span></p>
1561    
1562     </li>
1563    
1564     <!-- v2-onclose
1565     <li>
1566    
1567 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>
1568 wakaba 1.111 object associated with <var title="">worker global scope</var>,
1569     <span>queue a task</span> to <span>fire a simple event</span>
1570 wakaba 1.195 named <code title="event-close">close</code> at that object.</span></p>
1571 wakaba 1.111
1572     </li>
1573     -->
1574 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
1575 wakaba 1.111 run the following steps in parallel with the worker's main loop (the
1576     "<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p>
1577    
1578 wakaba 1.159 <ol><!-- v2-onclose
1579 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
1580 wakaba 1.111 <span title="dom-WorkerGlobalScope-closing">closing</span> flag is
1581     false, <span>queue a task</span> to <span>fire a simple
1582 wakaba 1.195 event</span> named <code title="event-close">close</code> at the
1583 wakaba 1.111 worker's <code>WorkerGlobalScope</code> object.</span></p></li>
1584 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
1585 wakaba 1.111 true.</span></li>
1586    
1587     <!-- v2-onclose
1588     <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
1589     a worker</span>" processing model defined above immediately starts
1590     running event listeners registered for the <code
1591     title="event-close">close</code> event, this time should not be
1592     zero &mdash; the idea is that the <code
1593     title="event-close">close</code> event can be used to clean up
1594     when shutting down unexpectedly.</span></p></li>
1595     -->
1596    
1597     <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>
1598     queued in the <span>event loop</span>'s <span title="task
1599     queue">task queues</span><!-- v2-onclose other than the <code
1600     title="event-close">close</code> event that this algorithm just
1601     added-->, discard them without processing them.</span></li>
1602    
1603     <!-- v2-onclose
1604     <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
1605     this algorithm just queued hasn't yet been dispatched, then abort
1606     the script currently running in the worker.</span></p></li>
1607     -->
1608    
1609     <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>
1610    
1611     <li><p class="no-ja-translation" data-ja-hash="fbb7fecc04423fb209634e5473bd7ec1"><span class=en-original lang=en>Abort the script currently running in the worker<!--
1612     v2-onclose (if any script is running, then it will be a handler for
1613     the <code title="event-close">close</code> event)-->.</span></li>
1614    
1615 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>"
1616 wakaba 1.111 processing model on a worker at any time, e.g. in response to user
1617     requests, in response to CPU quota management, or when a worker
1618     stops being an <a href=#active-needed-worker>active needed worker</a> if the worker
1619     continues executing even after its <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag was
1620     set to true.</span></p>
1621    
1622 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
1623 wakaba 1.111 the following steps in parallel with the worker's main loop (the
1624     "<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p>
1625    
1626 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
1627 wakaba 1.111 <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to
1628     true.</span></li>
1629    
1630     <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>
1631     queued in the <span>event loop</span>'s <span title="task
1632     queue">task queues</span>, discard them without processing
1633     them.</span></li>
1634    
1635     <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>
1636    
1637     <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
1638     actually a <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the
1639     worker is a dedicated worker), then empty the <span>port message
1640     queue</span> of the port that the worker's implicit port is
1641     entangled with.</span></li>
1642    
1643 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
1644 wakaba 1.133 <span>DOM manipulation task source</span>.</span></p>
1645    
1646    
1647 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>
1648 wakaba 1.111
1649 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
1650     worker's scripts, if the error did not occur while handling a
1651     previous script error, the user agent must <span>report the
1652     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>
1653     attribute. <a href=#refsHTML5>[HTML5]</a></span></p>
1654 wakaba 1.111
1655 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
1656 wakaba 1.120 the error occurred while handling a previous script error, the error
1657 wakaba 1.137 should be reported to the user. <a href=#refsHTML5>[HTML5]</a></span></p>
1658 wakaba 1.111
1659 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
1660     the error occurred while handling a previous script error, the user
1661 wakaba 1.111 agent must <span>queue a task</span> to <a href=#fire-a-worker-error-event>fire a worker error
1662     event</a> at the <code><a href=#worker>Worker</a></code> object associated with the
1663     worker.</span></p>
1664    
1665     <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
1666     a <code><a href=#worker>Worker</a></code> object, it must dispatch an event that uses
1667     the <code><a href=#errorevent>ErrorEvent</a></code> interface, with the name <code title=event-error>error</code>, that doesn't bubble and is
1668     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
1669     appropriately. The default action of this event depends on whether
1670     the <code><a href=#worker>Worker</a></code> object is itself in a worker. If it is, and
1671     that worker is also a dedicated worker, then the user agent must
1672     again <span>queue a task</span> to <a href=#fire-a-worker-error-event>fire a worker error
1673     event</a> at the <code><a href=#worker>Worker</a></code> object associated with
1674     <em>that</em> worker. Otherwise, then the error should be reported
1675     to the user.</span></p>
1676    
1677 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
1678     <span>DOM manipulation task source</span>.</span></p>
1679    
1680 wakaba 1.204 <hr><pre class="idl no-ja-translation" data-ja-hash="2c93d3bb074ab09d4dc7e4678d8db4dd"><span class=en-original lang=en>interface <dfn id=errorevent>ErrorEvent</dfn> : Event {
1681 wakaba 1.138 readonly attribute DOMString <a href=#dom-errorevent-message title=dom-ErrorEvent-message>message</a>;
1682     readonly attribute DOMString <a href=#dom-errorevent-filename title=dom-ErrorEvent-filename>filename</a>;
1683 wakaba 1.111 readonly attribute unsigned long <a href=#dom-errorevent-lineno title=dom-ErrorEvent-lineno>lineno</a>;
1684 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);
1685 wakaba 1.111 };</span></pre>
1686    
1687 wakaba 1.204 <p class="no-ja-translation" data-ja-hash="e858dabb2d6c484114d8450e8180552d"><span class=en-original lang=en>The <dfn id=dom-errorevent-initerrorevent title=dom-ErrorEvent-initErrorEvent><code>initErrorEvent()</code></dfn>
1688     method must initialize the event in a manner analogous to the
1689     similarly-named method 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.205 <li><p class="no-ja-translation" data-ja-hash="3d6f94d7c2eda8b4bc887b5ceebb149c"><span class=en-original lang=en><span>Create a new <code>MessagePort</code> object</span>
1795     owned by the <span title="script's global object">global
1796     object</span> of the <span title=concept-script>script</span> that
1797 wakaba 1.201 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 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="dab9ec1fa195098f1e7d5e38d441a463"><span class=en-original lang=en>Let <var title="">docs</var> be the <a href=#list-of-relevant-document-objects-to-add>list of relevant
1823     <code>Document</code> objects to add</a> given the <span title="script's global object">global object</span> of the <span title=concept-script>script</span> that invoked the
1824 wakaba 1.111 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 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="9a188536e5d8b8e9cc5c77a63925e694"><span class=en-original lang=en>If the <span title="script's global object">global object</span>
1840 wakaba 1.111 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 wakaba 1.205 <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object that is the <span title="script's global object">global object</span> of the <span title=concept-script>script</span> that invoked the
1845 wakaba 1.111 constructor.</span></p>
1846    
1847     </li>
1848    
1849     <li>
1850    
1851 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="a08cc08706b5e27e6f7fea7ccf6705ee"><span class=en-original lang=en><a href=#run-a-worker>Run a worker</a> for the resulting <span>absolute
1852     URL</span>, with the <span>script's browsing context</span> of the
1853 wakaba 1.111 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.205 </ol><p class="no-ja-translation" data-ja-hash="94265ba37e7269c66945feab30dadb0a"><span class=en-original lang=en>This constructor must be visible when the <span>script's global
1861     object</span> is either a <code>Window</code> object or an object
1862 wakaba 1.124 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 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="dab9ec1fa195098f1e7d5e38d441a463"><span class=en-original lang=en>Let <var title="">docs</var> be the <a href=#list-of-relevant-document-objects-to-add>list of relevant
1912     <code>Document</code> objects to add</a> given the <span title="script's global object">global object</span> of the <span title=concept-script>script</span> that invoked the
1913 wakaba 1.111 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.205 <li><p class="no-ja-translation" data-ja-hash="a40ab4e22ea2b3e796d21eb952647b7c"><span class=en-original lang=en><span>Create a new <code>MessagePort</code> object</span>
1926     owned by the <span title="script's global object">global
1927     object</span> of the script that invoked the method. Let this be
1928 wakaba 1.111 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 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="2d253ff4e0bff2c52fd5f6b3e8561ce9"><span class=en-original lang=en>If the <span title="script's global object">global
1996     object</span> of the <span title=concept-script>script</span>
1997 wakaba 1.111 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 wakaba 1.205 object that is the <span title="script's global object">global
2001     object</span> of the <span title=concept-script>script</span>
2002 wakaba 1.111 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 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="2d253ff4e0bff2c52fd5f6b3e8561ce9"><span class=en-original lang=en>If the <span title="script's global object">global object</span>
2051 wakaba 1.111 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 wakaba 1.205 object that is the <span title="script's global object">global
2055     object</span> of the <span title=concept-script>script</span>
2056 wakaba 1.111 that invoked the constructor.</span></p>
2057    
2058     </li>
2059    
2060     <li>
2061    
2062 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="e52c0d187204edcce3226050f13b218e"><span class=en-original lang=en><a href=#run-a-worker>Run a worker</a> for <var title="">scriptURL</var>,
2063     with the <span>script's browsing context</span> of the script that
2064 wakaba 1.168 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.205 </ol><p class="no-ja-translation" data-ja-hash="94265ba37e7269c66945feab30dadb0a"><span class=en-original lang=en>This constructor must be visible when the <span>script's global
2072     object</span> is either a <code>Window</code> object or an object
2073 wakaba 1.124 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.205 <p class="no-ja-translation" data-ja-hash="28cf06b121668cca9259c13ba3562796"><span class=en-original lang=en>Attempt to <span>fetch</span> each resource identified by the
2122     resulting <span title="absolute URL">absolute URLs</span>, from
2123 wakaba 1.191 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 wakaba 1.203 <p class="no-ja-translation" data-ja-hash="179ad45b4312a1c3d9dc05a48b1d17a6"><span class=en-original lang=en><span>Create a script</span>, using <var title="">source</var> as the script source and <var title="">language</var> as the scripting language, using the
2157     same global object, browsing context, URL character encoding,
2158     base URL, and script group as the <span title=concept-script>script</span> that was created by the
2159 wakaba 1.111 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 wakaba 1.205 <p class="no-ja-translation" data-ja-hash="be8e99febe2a5427ef9832c85c13da0e"><span class=en-original lang=en>There must be no interface objects and constructors available in
2216     the global scope of scripts whose <span>script's global
2217     object</span> is a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object except for
2218 wakaba 1.111 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