/[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.210 - (hide annotations) (download)
Wed Jan 6 06:22:50 2010 UTC (16 years, 6 months ago) by wakaba
Branch: MAIN
Changes since 1.209: +17 -17 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.206 <script src=ja-script defer async></script><link href=http://www.whatwg.org/images/icon rel=icon><body class=cfc>
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.210 <h2 class="no-num no-toc has-ja-translation" data-ja-hash="9ea0914ebe364045b80e1ff1a8a2ec1e" data-ja-real-hash="111f1152245e7c8251c0f45a304c18cf"><span class=en-original lang=en>Draft Recommendation &mdash; 6 January 2010</span><span class=ja-translation lang=ja>勧告案<ins class=ja-note>の非公式和訳</ins> &mdash;
11     <ins class=ja-note>(原文出版日)</ins> 2010年1月6日</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 wakaba 1.208 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="560332ac6821295be00c738df52032d0"><span class=en-original lang=en><a href=#the-workernavigator-object><span class=secno>5.2 </span>The <code>WorkerNavigator</code> object</a></span></li>
148 wakaba 1.139 <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 wakaba 1.207 <pre class="no-ja-translation" data-ja-hash="b3d5b7301a62f1c4679a2bc6353b3369"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
699 wakaba 1.111 &lt;html&gt;
700     &lt;head&gt;
701 wakaba 1.207 &lt;title&gt;Worker example: Multicore computation&lt;/title&gt;
702 wakaba 1.111 &lt;/head&gt;
703     &lt;body&gt;
704 wakaba 1.207 &lt;p&gt;Result: &lt;output id="result"&gt;&lt;/output&gt;&lt;/p&gt;
705 wakaba 1.111 &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 wakaba 1.206 <pre class="no-ja-translation" data-ja-hash="9ead219adc5a1168e3a3bcba20c329b0"><span class=en-original lang=en>function handleMessage(e) {
808 wakaba 1.111 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 wakaba 1.206 if ('onmessage' in this) // dedicated worker
848 wakaba 1.111 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 wakaba 1.206 <pre class="no-ja-translation" data-ja-hash="44541f0b3332c661f1465eaa011c42ad"><span class=en-original lang=en>function handleMessage(e) {
926 wakaba 1.111 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 wakaba 1.206 if ('onmessage' in this) // dedicated worker
957 wakaba 1.111 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 wakaba 1.208 </span></table><hr><p class="no-ja-translation" data-ja-hash="cccaf784af1f9110ccf7b4e77e30717a"><span class=en-original lang=en>The <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> interface must not exist if
1189     the interface's <span>relevant namespace object</span> is a
1190     <code>Window</code> object. <a href=#refsWEBIDL>[WEBIDL]</a></span></p>
1191    
1192    
1193    
1194     <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>
1195 wakaba 1.111
1196 wakaba 1.188 <pre class="idl no-ja-translation" data-ja-hash="77cfd043067c77163e5f8886b3e13e12"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
1197 wakaba 1.154 interface <dfn id=dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
1198 wakaba 1.188 void <a href=#dom-dedicatedworkerglobalscope-postmessage title=dom-DedicatedWorkerGlobalScope-postMessage>postMessage</a>(in any message, in optional <span>MessagePortArray</span> ports);<!--
1199 wakaba 1.111 <span>MessagePort</span> <span title="dom-DedicatedWorkerGlobalScope-startConversation">startConversation</span>(in any message);-->
1200 wakaba 1.137 attribute <span>Function</span> <a href=#handler-dedicatedworkerglobalscope-onmessage title=handler-DedicatedWorkerGlobalScope-onmessage>onmessage</a>;
1201 wakaba 1.111 };</span></pre>
1202    
1203     <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
1204     had an implicit <code>MessagePort</code> associated with them. This
1205     port is part of a channel that is set up when the worker is created,
1206     but it is not exposed. This object must never be garbage collected
1207     before the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span></p>
1208    
1209     <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
1210     at the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span></p>
1211    
1212     <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><!--
1213     and <dfn
1214     title="dom-DedicatedWorkerGlobalScope-startConversation"><code>startConversation()</code></dfn>-->
1215     method<!--s (startConversation)--> on
1216     <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> objects must act as if, when
1217     invoked, it<!--/they (startConversation)--> immediately invoked the
1218     method of the same name on the port, with the same arguments, and
1219     returned the same return value.</span></p>
1220    
1221 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
1222     corresponding <span title="event handler event type">event handler
1223     event types</span>) that must be supported, as IDL attributes, by
1224     objects implementing the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code>
1225     interface:</span></p>
1226 wakaba 1.111
1227 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>
1228 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>
1229 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
1230     model, a dedicated worker is an extension of the <span>cache
1231     host</span> from which it was created.</span></p>
1232 wakaba 1.111
1233    
1234    
1235 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>
1236 wakaba 1.111
1237 wakaba 1.200 <pre class="idl no-ja-translation" data-ja-hash="6b77d85a80a9793487a476146ebf79ed"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
1238 wakaba 1.154 interface <dfn id=sharedworkerglobalscope>SharedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
1239 wakaba 1.111 readonly attribute DOMString <a href=#dom-sharedworkerglobalscope-name title=dom-SharedWorkerGlobalScope-name>name</a>;
1240 wakaba 1.200 readonly attribute <span>ApplicationCache</span> <span title=dom-SharedWorkerGlobalScope-applicationCache>applicationCache</span>;
1241 wakaba 1.137 attribute <span>Function</span> <a href=#handler-sharedworkerglobalscope-onconnect title=handler-SharedWorkerGlobalScope-onconnect>onconnect</a>;
1242 wakaba 1.111 };</span></pre>
1243    
1244     <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
1245     their global object for each connection.</span><span class=ja-translation lang=ja>共有労働者は、各接続について大域オブジェクトの <code
1246     title=event-WorkerGlobalScope-connect>connect</code> 事象を通じてメッセージ・ポートを受信します。</span></p>
1247    
1248     <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>
1249     attribute must return the value it was assigned when the
1250     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object was created by the
1251     "<a href=#run-a-worker>run a worker</a>" algorithm. Its value represents the name
1252     that can be used to obtain a reference to the worker using the
1253     <code><a href=#sharedworker>SharedWorker</a></code> constructor.</span></p>
1254    
1255 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
1256     corresponding <span title="event handler event type">event handler
1257     event types</span>) that must be supported, as IDL attributes, by
1258     objects implementing the <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>
1259     interface:</span></p>
1260 wakaba 1.111
1261 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>
1262 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>
1263 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
1264     model, a shared worker is its own <span>cache host</span>. The
1265     <a href=#run-a-worker>run a worker</a> algorithm takes care of associating the
1266     worker with an <span>application cache</span>.</span></p>
1267 wakaba 1.111
1268 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>
1269 wakaba 1.111 attribute returns the <code>ApplicationCache</code> object for the
1270     worker.</span></p><!-- normative conf criteria is in the appcache section
1271     -->
1272    
1273    
1274 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>
1275 wakaba 1.111
1276     <p class="no-ja-translation" data-ja-hash="5d71247ae9c7e88e4244d78062ed4760"><span class=en-original lang=en>Both the <span>origin</span> and <span>effective script
1277     origin</span> of scripts running in workers are the
1278     <span>origin</span> of the <span>absolute URL</span> given in that
1279     the worker's <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
1280     represents.</span></p>
1281    
1282    
1283    
1284 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>
1285 wakaba 1.111
1286 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
1287     loop</span> distinct from those defined for <span title="unit of
1288     related similar-origin browsing contexts">units of related
1289     similar-origin browsing contexts</span>. This <span>event
1290     loop</span> has no associated <span>browsing context</span>, and its
1291     <span title="task queue">task queues</span> only have events,
1292     callbacks, and networking activity as <span title=concept-task>tasks</span>. The processing model of these
1293     <span title="event loop">event loops</span> is defined below in the
1294     <a href=#run-a-worker>run a worker</a> algorithm.</span></p>
1295 wakaba 1.111
1296     <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
1297     initially be false, but which can get set to true by the algorithms
1298     in the processing model section below.</span></p>
1299    
1300 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
1301 wakaba 1.111 true, the <span>event loop</span>'s <span title="task queue">task
1302     queues</span> must discard any further <span title=concept-task>tasks</span> that would be added to them (tasks
1303 wakaba 1.190 already on the queue are unaffected except where otherwise
1304 wakaba 1.111 specified). Effectively, once the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is true,
1305     timers stop firing, notifications for all pending asynchronous
1306     operations are dropped, etc.</span></p>
1307    
1308    
1309 wakaba 1.133
1310 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>
1311 wakaba 1.111
1312     <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
1313     <code>MessagePort</code> objects.</span><span class=ja-translation lang=ja>労働者は、メッセージ通信路とその <code>MessagePort</code>
1314     オブジェクトを通じて、他の労働者や閲覧文脈と通信します。</span></p>
1315    
1316     <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
1317     scope</var> has a list of <dfn id="the-worker's-ports">the worker's ports</dfn>, which
1318     consists of all the <code>MessagePort</code> objects that are
1319     entangled with another port and that have one (but only one) port
1320     owned by <var title="">worker global scope</var>. This list includes
1321     <!--all the <code>MessagePort</code> objects that are in events
1322     pending in the <span>event loop</span>, as well as (commented out
1323     because in practice it makes no difference either way as far as I
1324     can tell, and it would be hard to strictly implement since these
1325     ports might not yet be across the thread boundary)--> the implicit
1326     <code>MessagePort</code> in the case of <a href=#dedicatedworkerglobalscope title=DedicatedWorkerGlobalScope>dedicated workers</a>.</span></p>
1327    
1328     <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
1329     worker's workers</dfn>. Initially this list is empty; it is
1330     populated when the worker creates or obtains further workers.</span></p>
1331    
1332     <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
1333     <dfn id="the-worker's-documents">the worker's <code>Document</code>s</dfn>. Initially this list
1334     is empty; it is populated when the worker is created.</span></p>
1335    
1336     <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
1337     worker's <code>Document</code>s</dfn>, the user agent must, for each
1338     worker in the list of <a href="#the-worker's-workers">the worker's workers</a> whose list
1339     of <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> does not contain
1340     <var title="">d</var>, <a href="#add-a-document-to-the-worker's-documents" title="add a document to the worker's
1341     documents">add <var title="">d</var> to <var title="">q</var>'s
1342     <code>WorkerGlobalScope</code> owner's list of <span>the worker's
1343     <code>Document</code>s</span></a>.</span></p> <!-- suggestions welcome
1344     on making this sentence into understandable English -->
1345    
1346     <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
1347     Document">discarded</span>, it must be removed from the list of
1348     <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> of each worker
1349     whose list contains that <code>Document</code>.</span></p>
1350    
1351 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>
1352 wakaba 1.111 when creating or obtaining a worker, the <dfn id=list-of-relevant-document-objects-to-add>list of relevant
1353     <code>Document</code> objects to add</dfn> depends on the type of
1354     <var title="">o</var>. If <var title="">o</var> is a
1355     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object (i.e. if we are creating a
1356     nested worker), then the relevant <code>Document</code>s are the
1357     <code>Document</code>s that are in <var title="">o</var>'s own list
1358     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
1359     <code>Document</code> is just the <code>Document</code> that is the
1360     <span>active document</span> of the <code>Window</code> object <var title="">o</var>.</span></p>
1361    
1362 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
1363 wakaba 1.111 list of <a href="#the-worker's-documents">the worker's <code>Document</code>s</a> is not
1364     empty.</span></p>
1365    
1366     <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
1367     <a href=#permissible-worker>permissible worker</a> and either it has outstanding
1368     timers, database transactions, or network connections, or its list
1369     of <a href="#the-worker's-ports">the worker's ports</a> is not empty, or its
1370     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> is actually a
1371     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object (i.e. the worker is a
1372     shared worker).</span></p>
1373    
1374     <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
1375     of the <code>Document</code> objects in <a href="#the-worker's-documents">the worker's
1376     <code>Document</code>s</a> are <span>fully active</span>.</span></p>
1377    
1378     <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
1379     not an <a href=#active-needed-worker>active needed worker</a> but it is a
1380     <a href=#permissible-worker>permissible worker</a>.</span></p>
1381    
1382    
1383 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>
1384 wakaba 1.111
1385 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
1386     <span>URL</span> <var title="">url</var>, a browsing context <var title="">owner browsing context</var>, an origin <var title="">owner
1387     origin</var>, and with global scope <var title="">worker global
1388     scope</var>, it must run the following steps:</span></p>
1389 wakaba 1.111
1390 wakaba 1.159 <ol><li>
1391 wakaba 1.111
1392     <p class="no-ja-translation" data-ja-hash="699e58187adc9ee37990500a66c83a8f"><span class=en-original lang=en>Create a completely separate and parallel execution environment
1393     (i.e. a separate thread or process or equivalent construct), and
1394     run the rest of these steps asynchronously in that context.</span></p>
1395    
1396     </li>
1397    
1398     <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
1399     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object (i.e. the worker is a
1400     shared worker), and there are any <span title="relevant application
1401     cache">relevant application caches</span> that are identified by a
1402     manifest URL with the <span>same origin</span> as <var title="">url</var> and that have <var title="">url</var> as one of
1403     their entries, <em>not</em> excluding entries marked as <span title=concept-appcache-foreign>foreign</span>, then associate the
1404     <var title="">worker global scope</var> with the <span title=concept-appcache-selection>most appropriate application
1405     cache</span> of those that match.</span></li>
1406    
1407     <li>
1408    
1409 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>
1410     <!-- not http-origin privacy sensitive -->
1411 wakaba 1.111
1412 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
1413 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
1414     origin</span> as the original <var title="">url</var>), then for
1415     each <code><a href=#worker>Worker</a></code> or <code><a href=#sharedworker>SharedWorker</a></code> object
1416     associated with <var title="">worker global scope</var>,
1417     <span>queue a task</span> to <span>fire a simple event</span>
1418 wakaba 1.195 named <code title=event-error>error</code> at that
1419 wakaba 1.112 object. Abort these steps.</span></p>
1420 wakaba 1.111
1421 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
1422     Unicode by assuming it was encoded as UTF-8, to obtain its <var title="">source</var>.</span></p>
1423 wakaba 1.111
1424     <p class="no-ja-translation" data-ja-hash="c880bce97c5a1aadccd8989fc4ec8551"><span class=en-original lang=en>Let <var title="">language</var> be JavaScript.</span></p>
1425    
1426     <p class="note has-ja-translation" data-ja-hash="5ba762159d9de3f8bd326fe0bcfac206"><span class=en-original lang=en>As with <code>script</code> elements, the MIME
1427     type of the script is ignored. Unlike with <code>script</code>
1428     elements, there is no way to override the type. It's always
1429     assumed to be JavaScript.</span><span class=ja-translation lang=ja><code>script</code> 要素と同様に、スクリプトの MIME 型は無視します。
1430     <code>script</code> 要素とは異なり、
1431     型を上書きする方法はありません。スクリプトは常に JavaScript
1432 wakaba 1.183 と仮定します。</span></p>
1433 wakaba 1.111
1434     </li>
1435    
1436     <li>
1437    
1438     <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
1439     created, as follows.</span></p>
1440    
1441     <p class="no-ja-translation" data-ja-hash="2dfcd0f76cde607de6cc88d70f390825"><span class=en-original lang=en>Create a new <span>script execution environment</span>
1442     set up as appropriate for the scripting language <var title="">language</var>.</span></p>
1443    
1444     <p class="no-ja-translation" data-ja-hash="fdf8b5f9ba18a31a8f48670142f51442"><span class=en-original lang=en>Parse/compile/initialize <var title="">source</var> using that
1445     <span>script execution environment</span>, as appropriate for <var title="">language</var>, and thus obtain a <span>list of code
1446     entry-points</span>; set the <i>initial code entry-point</i> to
1447     the entry-point for any executable code to be immediately run.</span></p>
1448    
1449     <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>
1450    
1451     <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>
1452    
1453     <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
1454     UTF-8. (This is just used for encoding non-ASCII characters in the
1455     query component of URLs.)</span></p>
1456    
1457     <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>
1458    
1459     </li>
1460    
1461     <li>
1462    
1463 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
1464 wakaba 1.111 worker such that no sooner than it stops being either a
1465     <a href=#protected-worker>protected worker</a> or a <a href=#suspendable-worker>suspendable
1466     worker</a>, and no later than it stops being a
1467     <a href=#permissible-worker>permissible worker</a>, <var title="">worker global
1468     scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is set
1469     to true<!-- v2-onclose and <span title="queue a task">a task is
1470 wakaba 1.195 queued</span> to <span>fire a simple event</span> named <code
1471 wakaba 1.111 title="event-close">close</code> at <var title="">worker global
1472     scope</var>-->.</span></p>
1473    
1474     </li>
1475    
1476     <li>
1477    
1478     <p class="no-ja-translation" data-ja-hash="24a8fa04f32239e0dafc1e98e466d6b4"><span class=en-original lang=en><strong>Suspending workers</strong>: Start monitoring the
1479     worker, such that whenever <var title="">worker global
1480     scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is false
1481     and the worker is a <a href=#suspendable-worker>suspendable worker</a>, the user
1482     agent suspends execution of script in that worker until such time
1483     as either the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag switches
1484     to true or the worker stops being a <a href=#suspendable-worker>suspendable
1485     worker</a>.</span></p>
1486    
1487     </li>
1488    
1489     <li>
1490    
1491     <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
1492     <span title=concept-script>script</span>'s <i>initial code
1493     entry-point</i>, and let that run until it either returns, fails
1494     to catch an exception, or gets prematurely aborted by the
1495     "<a href=#kill-a-worker>kill a worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>"
1496     algorithms defined below.</span></p>
1497    
1498 wakaba 1.151 <!-- v2-onclose
1499     <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
1500     worker</span>" algorithm, then that same algorithm will cause
1501     there to only be a single <span title="concept-task">task</span>
1502 wakaba 1.111 in the <span>event loop</span> at the next step, namely the task
1503 wakaba 1.151 for the <code title="message-close">close</code> event. The
1504     "<span>terminate a worker</span>" algorithm removes all the
1505 wakaba 1.111 events.</span></p>
1506 wakaba 1.151 -->
1507 wakaba 1.111
1508     </li>
1509    
1510     <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
1511     <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the worker is
1512     a dedicated worker), then enable the <span>port message
1513     queue</span> of the worker's implicit port.</span></li>
1514    
1515     <li>
1516    
1517     <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
1518     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
1519     to true.</span></p>
1520    
1521     </li>
1522    
1523     <li>
1524    
1525     <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
1526     <span title="task queue">task queues</span>, if any. The user
1527     agent may pick any <span>task queue</span>.</span></p>
1528    
1529     <p class="note no-ja-translation" data-ja-hash="2a401c207ed88f5206b2eb8a90fc91a6"><span class=en-original lang=en>The handling of events or the execution of
1530     callbacks might get prematurely aborted by the "<a href=#kill-a-worker>kill a
1531     worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>" algorithms
1532     defined below.</span></p>
1533    
1534     </li>
1535    
1536     <li>
1537    
1538     <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
1539     <span>task queue</span>.</span></p>
1540    
1541     </li>
1542    
1543     <li>
1544    
1545     <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
1546     <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
1547     to false, then jump back to the step above labeled <i>event
1548     loop</i>.</span></p>
1549    
1550     </li>
1551    
1552     <li>
1553    
1554     <p class="no-ja-translation" data-ja-hash="fb906768fcbbd4867b29825a7893fe6e"><span class=en-original lang=en>If there are any outstanding transactions that have callbacks
1555     that involve <span title=concept-script>scripts</span> whose
1556     <span title="script's global object">global object</span> is the
1557     <var title="">worker global scope</var>, roll them back (without
1558     invoking any of the callbacks).</span></p>
1559    
1560     </li>
1561    
1562     <li>
1563    
1564     <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
1565     of active timeouts</span> and its <span>list of active
1566     intervals</span>.</span></p>
1567    
1568     </li>
1569    
1570     <!-- v2-onclose
1571     <li>
1572    
1573 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>
1574 wakaba 1.111 object associated with <var title="">worker global scope</var>,
1575     <span>queue a task</span> to <span>fire a simple event</span>
1576 wakaba 1.195 named <code title="event-close">close</code> at that object.</span></p>
1577 wakaba 1.111
1578     </li>
1579     -->
1580 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
1581 wakaba 1.111 run the following steps in parallel with the worker's main loop (the
1582     "<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p>
1583    
1584 wakaba 1.159 <ol><!-- v2-onclose
1585 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
1586 wakaba 1.111 <span title="dom-WorkerGlobalScope-closing">closing</span> flag is
1587     false, <span>queue a task</span> to <span>fire a simple
1588 wakaba 1.195 event</span> named <code title="event-close">close</code> at the
1589 wakaba 1.111 worker's <code>WorkerGlobalScope</code> object.</span></p></li>
1590 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
1591 wakaba 1.111 true.</span></li>
1592    
1593     <!-- v2-onclose
1594     <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
1595     a worker</span>" processing model defined above immediately starts
1596     running event listeners registered for the <code
1597     title="event-close">close</code> event, this time should not be
1598     zero &mdash; the idea is that the <code
1599     title="event-close">close</code> event can be used to clean up
1600     when shutting down unexpectedly.</span></p></li>
1601     -->
1602    
1603     <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>
1604     queued in the <span>event loop</span>'s <span title="task
1605     queue">task queues</span><!-- v2-onclose other than the <code
1606     title="event-close">close</code> event that this algorithm just
1607     added-->, discard them without processing them.</span></li>
1608    
1609     <!-- v2-onclose
1610     <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
1611     this algorithm just queued hasn't yet been dispatched, then abort
1612     the script currently running in the worker.</span></p></li>
1613     -->
1614    
1615     <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>
1616    
1617     <li><p class="no-ja-translation" data-ja-hash="fbb7fecc04423fb209634e5473bd7ec1"><span class=en-original lang=en>Abort the script currently running in the worker<!--
1618     v2-onclose (if any script is running, then it will be a handler for
1619     the <code title="event-close">close</code> event)-->.</span></li>
1620    
1621 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>"
1622 wakaba 1.111 processing model on a worker at any time, e.g. in response to user
1623     requests, in response to CPU quota management, or when a worker
1624     stops being an <a href=#active-needed-worker>active needed worker</a> if the worker
1625     continues executing even after its <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag was
1626     set to true.</span></p>
1627    
1628 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
1629 wakaba 1.111 the following steps in parallel with the worker's main loop (the
1630     "<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p>
1631    
1632 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
1633 wakaba 1.111 <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to
1634     true.</span></li>
1635    
1636     <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>
1637     queued in the <span>event loop</span>'s <span title="task
1638     queue">task queues</span>, discard them without processing
1639     them.</span></li>
1640    
1641     <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>
1642    
1643     <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
1644     actually a <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the
1645     worker is a dedicated worker), then empty the <span>port message
1646     queue</span> of the port that the worker's implicit port is
1647     entangled with.</span></li>
1648    
1649 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
1650 wakaba 1.133 <span>DOM manipulation task source</span>.</span></p>
1651    
1652    
1653 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>
1654 wakaba 1.111
1655 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
1656     worker's scripts, if the error did not occur while handling a
1657     previous script error, the user agent must <span>report the
1658     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>
1659 wakaba 1.207 attribute.
1660    
1661     <a href=#refsHTML5>[HTML5]</a>
1662    
1663     </span></p>
1664 wakaba 1.111
1665 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="b1262662611c9475a728936b63510ee5"><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
1666 wakaba 1.120 the error occurred while handling a previous script error, the error
1667 wakaba 1.210 may be reported to the user.
1668 wakaba 1.207
1669     <a href=#refsHTML5>[HTML5]</a>
1670    
1671     </span></p>
1672 wakaba 1.111
1673 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
1674     the error occurred while handling a previous script error, the user
1675 wakaba 1.111 agent must <span>queue a task</span> to <a href=#fire-a-worker-error-event>fire a worker error
1676     event</a> at the <code><a href=#worker>Worker</a></code> object associated with the
1677     worker.</span></p>
1678    
1679 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="35e5dc7e779c495262161a703b45ffbc"><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
1680 wakaba 1.111 a <code><a href=#worker>Worker</a></code> object, it must dispatch an event that uses
1681     the <code><a href=#errorevent>ErrorEvent</a></code> interface, with the name <code title=event-error>error</code>, that doesn't bubble and is
1682     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
1683     appropriately. The default action of this event depends on whether
1684     the <code><a href=#worker>Worker</a></code> object is itself in a worker. If it is, and
1685     that worker is also a dedicated worker, then the user agent must
1686     again <span>queue a task</span> to <a href=#fire-a-worker-error-event>fire a worker error
1687     event</a> at the <code><a href=#worker>Worker</a></code> object associated with
1688 wakaba 1.210 <em>that</em> worker. Otherwise, then the error may be reported
1689 wakaba 1.111 to the user.</span></p>
1690    
1691 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
1692     <span>DOM manipulation task source</span>.</span></p>
1693    
1694 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 {
1695 wakaba 1.138 readonly attribute DOMString <a href=#dom-errorevent-message title=dom-ErrorEvent-message>message</a>;
1696     readonly attribute DOMString <a href=#dom-errorevent-filename title=dom-ErrorEvent-filename>filename</a>;
1697 wakaba 1.111 readonly attribute unsigned long <a href=#dom-errorevent-lineno title=dom-ErrorEvent-lineno>lineno</a>;
1698 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);
1699 wakaba 1.111 };</span></pre>
1700    
1701 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>
1702     method must initialize the event in a manner analogous to the
1703     similarly-named method in the DOM Events interfaces. <a href=#refsDOMEVENTS>[DOMEVENTS]</a></span></p>
1704 wakaba 1.111
1705     <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>
1706     attribute represents the error message.</span></p>
1707    
1708 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>
1709 wakaba 1.111 attribute represents the <span>absolute URL</span> of the script in
1710 wakaba 1.120 which the error originally occurred.</span></p>
1711 wakaba 1.111
1712 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>
1713     attribute represents the line number where the error occurred in the
1714 wakaba 1.111 script.</span></p>
1715    
1716    
1717    
1718 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>
1719 wakaba 1.111
1720 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>
1721 wakaba 1.111
1722 wakaba 1.208 <pre class="idl no-ja-translation" data-ja-hash="fe1bdb635f9560b4e343933b1e06ce22"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
1723     interface <dfn id=abstractworker>AbstractWorker</dfn> {
1724 wakaba 1.137 attribute <span>Function</span> <a href=#handler-abstractworker-onerror title=handler-AbstractWorker-onerror>onerror</a>;
1725     <!-- v2-onclose attribute <span>Function</span> <span title="handler-AbstractWorker-onclose">onclose</span>; -->
1726 wakaba 1.184 };
1727     <a href=#abstractworker>AbstractWorker</a> implements <span>EventTarget</span>;</span></pre>
1728 wakaba 1.111
1729 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
1730     corresponding <span title="event handler event type">event handler
1731     event types</span>) that must be supported, as IDL attributes, by
1732     objects implementing the <code><a href=#abstractworker>AbstractWorker</a></code> interface:</span></p>
1733 wakaba 1.111
1734 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>
1735 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>
1736 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> -->
1737 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>
1738 wakaba 1.111
1739 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)]
1740 wakaba 1.111 interface <dfn id=worker>Worker</dfn> : <a href=#abstractworker>AbstractWorker</a> {
1741     void <a href=#dom-worker-terminate title=dom-Worker-terminate>terminate</a>();
1742    
1743 wakaba 1.188 void <a href=#dom-worker-postmessage title=dom-Worker-postMessage>postMessage</a>(in any message, in optional <span>MessagePortArray</span> ports);<!--
1744 wakaba 1.111 <span>MessagePort</span> <span title="dom-Worker-startConversation">startConversation</span>(in any message);-->
1745 wakaba 1.137 attribute <span>Function</span> <a href=#handler-worker-onmessage title=handler-Worker-onmessage>onmessage</a>;
1746 wakaba 1.111 };</span></pre>
1747    
1748     <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,
1749     when invoked, must cause the "<a href=#terminate-a-worker>terminate a worker</a>"
1750     algorithm to be run on the worker with with the object is
1751     associated.</span></p>
1752    
1753     <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
1754     <code>MessagePort</code> associated with them. This port is part of
1755     a channel that is set up when the worker is created, but it is not
1756     exposed. This object must never be garbage collected before the
1757     <code><a href=#worker>Worker</a></code> object.</span></p>
1758    
1759     <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
1760     at the <code><a href=#worker>Worker</a></code> object.</span></p>
1761    
1762     <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><!--
1763     and <dfn
1764     title="dom-Worker-startConversation"><code>startConversation()</code></dfn>-->
1765     method<!--s (startConversation)--> on <code><a href=#worker>Worker</a></code> objects
1766     must act as if, when invoked, it<!--/they (startConversation)-->
1767     immediately invoked the method of the same name on the port, with
1768     the same arguments, and returned the same return value.</span></p>
1769    
1770 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
1771     corresponding <span title="event handler event type">event handler
1772     event types</span>) that must be supported, as IDL attributes, by
1773     objects implementing the <code><a href=#worker>Worker</a></code> interface:</span></p>
1774 wakaba 1.111
1775 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>
1776 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>
1777     </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
1778 wakaba 1.111 user agent must run the following steps:</span></p>
1779    
1780 wakaba 1.210 <ol><li><p class="no-ja-translation" data-ja-hash="c25e5a7c6b705956bf78fb7b5520d14b"><span class=en-original lang=en><span title="resolve a url">Resolve</span> the <var title="">scriptURL</var> argument relative to the <span>entry
1781 wakaba 1.121 script</span>'s <span title="script's base URL">base URL</span>,
1782     when the method is invoked.</span></li>
1783 wakaba 1.111
1784     <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>
1785     exception.</span><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
1786     例外を投げます。</span></li>
1787    
1788 wakaba 1.181 <li>
1789    
1790 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="f1c13da982ef60bb9a5ea38a82a62f88"><span class=en-original lang=en>If the <span>origin</span> of the resulting <span>absolute
1791 wakaba 1.181 URL</span> is not the <span title="same origin">same</span> as the
1792 wakaba 1.210 origin of the <span>entry script</span>, then throw a
1793 wakaba 1.201 <code>SECURITY_ERR</code> exception.</span></p>
1794 wakaba 1.181
1795     <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
1796     scheme as the original page: you can't load a script from a <code title="">data:</code> URL or <code title="">javascript:</code>
1797     URL, and a <code>https:</code> page couldn't start workers using
1798     scripts with <code>http:</code> URLs.</span></p>
1799    
1800     </li>
1801 wakaba 1.111
1802 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>
1803     object. Let <var title="">worker global scope</var> be this new
1804     object.</span></li>
1805 wakaba 1.111
1806     <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
1807     <var title="">worker global scope</var>. Let <var title="">worker</var> be this new object.</span></li>
1808    
1809 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>
1810     owned by the <span title="script's global object">global
1811     object</span> of the <span title=concept-script>script</span> that
1812 wakaba 1.201 invoked the constructor. Let this be the <var title="">outside
1813 wakaba 1.111 port</var>.</span></li>
1814    
1815     <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
1816     title="">worker</var> に関連付けます。</span></li>
1817    
1818 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>
1819     owned by <var title="">worker global scope</var>. Let <var title="">inside port</var> be this new object.</span></li>
1820 wakaba 1.111
1821     <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>
1822    
1823     <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
1824     <var title="">inside port</var>.</span></li>
1825    
1826     <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
1827     steps asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、以降の段階を非同期に走らせます。</span></li>
1828    
1829 wakaba 1.207 <!-- (this is done by the "run a worker" algorithm)
1830 wakaba 1.111 <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
1831 wakaba 1.207 queue</span>.</span></p></li>
1832     -->
1833 wakaba 1.111
1834     <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
1835     queue</span>.</span></li>
1836    
1837     <li>
1838    
1839 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
1840     <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
1841 wakaba 1.111 constructor.</span></p>
1842    
1843     </li>
1844    
1845     <li>
1846    
1847     <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
1848     <var title="">worker global scope</var>'s list of <span>the
1849     worker's <code>Document</code>s</span></a> the
1850     <code>Document</code> objects in <var title="">docs</var>.</span></p>
1851    
1852     </li>
1853    
1854     <li>
1855    
1856 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>
1857 wakaba 1.111 of the <span title=concept-script>script</span> that invoked the
1858     constructor is a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object (i.e. we
1859     are creating a nested worker), add <var title="">worker global
1860     scope</var> to the list of <a href="#the-worker's-workers">the worker's workers</a> of the
1861 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
1862 wakaba 1.111 constructor.</span></p>
1863    
1864     </li>
1865    
1866     <li>
1867    
1868 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="6e9455eb4e960dbf8aabe57bcf9064b6"><span class=en-original lang=en><a href=#run-a-worker>Run a worker</a> for the resulting <span>absolute
1869 wakaba 1.205 URL</span>, with the <span>script's browsing context</span> of the
1870 wakaba 1.111 script that invoked the method as the <var title="">owner browsing
1871 wakaba 1.210 context</var>, with the <span>origin</span> of the <span>entry
1872 wakaba 1.191 script</span> as the <var title="">owner origin</var>, and with
1873     <var title="">worker global scope</var> as the global scope.</span></p>
1874 wakaba 1.111
1875     </li>
1876    
1877 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
1878     object</span> is either a <code>Window</code> object or an object
1879 wakaba 1.124 implementing the <code><a href=#workerutils>WorkerUtils</a></code> interface.</span></p>
1880    
1881    
1882 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>
1883 wakaba 1.111
1884 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)]
1885 wakaba 1.111 interface <dfn id=sharedworker>SharedWorker</dfn> : <a href=#abstractworker>AbstractWorker</a> {
1886     readonly attribute <span>MessagePort</span> <a href=#dom-sharedworker-port title=dom-SharedWorker-port>port</a>;
1887     };</span></pre>
1888    
1889     <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>
1890     attribute must return the value it was assigned by the object's
1891     constructor. It represents the <code>MessagePort</code> for
1892     communicating with the shared worker.</span></p>
1893    
1894     <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>
1895     constructor is invoked, the user agent must run the following
1896     steps:</span></p>
1897    
1898 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
1899 wakaba 1.111 title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span></li>
1900    
1901     <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>
1902     exception.</span><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
1903     例外を投げます。</span></li>
1904    
1905 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
1906     resulting <span>absolute URL</span>.</span></li>
1907    
1908 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
1909     argument, or the empty string if the second argument was
1910     omitted.</span></li>
1911 wakaba 1.168
1912 wakaba 1.181 <li>
1913    
1914 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="9f29594d6617ebe74034d0cbcc854789"><span class=en-original lang=en>If the <span>origin</span> of <var title="">scriptURL</var> is
1915 wakaba 1.181 not the <span title="same origin">same</span> as the origin of the
1916 wakaba 1.210 <span>entry script</span>, then throw a <code>SECURITY_ERR</code>
1917 wakaba 1.201 exception.</span></p>
1918 wakaba 1.181
1919     <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
1920     scheme as the original page: you can't load a script from a <code title="">data:</code> URL or <code title="">javascript:</code>
1921     URL, and a <code>https:</code> page couldn't start workers using
1922     scripts with <code>http:</code> URLs.</span></p>
1923    
1924     </li>
1925 wakaba 1.111
1926     <li>
1927    
1928 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
1929     <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
1930 wakaba 1.111 constructor.</span></p>
1931    
1932     </li>
1933    
1934     <li>
1935    
1936     <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>
1937    
1938 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
1939 wakaba 1.111 shortly be associated with a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>
1940     object. Let this <code><a href=#sharedworker>SharedWorker</a></code> object be <var title="">worker</var>.</span></li>
1941    
1942 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>
1943     owned by the <span title="script's global object">global
1944     object</span> of the script that invoked the method. Let this be
1945 wakaba 1.111 the <var title="">outside port</var>.</span></li>
1946    
1947     <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>
1948    
1949 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
1950     null.</span></li>
1951    
1952     <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
1953     there exists a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object whose
1954     <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag
1955     is false, whose <code title=dom-WorkerGlobalScope-name>name</code> attribute is
1956     exactly equal to <var title="">name</var>, and whose <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
1957     represents an <span>absolute URL</span> with the <span>same
1958     origin</span> as <var title="">scriptURL</var>, then let <var title="">worker global scope</var> be that
1959     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object.</span></li>
1960    
1961     <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
1962     and there exists a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object
1963     whose <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a>
1964     flag is false, and whose <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
1965     is exactly equal to <var title="">scriptURL</var>, then let <var title="">worker global scope</var> be that
1966     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object.</span></li>
1967    
1968 wakaba 1.111 <li>
1969    
1970 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
1971     run these steps:</span></p>
1972 wakaba 1.111
1973 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>
1974 wakaba 1.111 attribute represents an <span>absolute URL</span> that is not
1975 wakaba 1.168 exactly equal to <var title="">scriptURL</var>, then throw a
1976     <code>URL_MISMATCH_ERR</code> exception and abort all these
1977     steps.</span></li>
1978 wakaba 1.111
1979     <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
1980     global scope</var> に関連付けます。</span></li>
1981    
1982 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>
1983     object</span> owned by <var title="">worker global
1984     scope</var>. Let this be the <var title="">inside
1985     port</var>.</span></li>
1986 wakaba 1.111
1987     <li><p class="no-ja-translation" data-ja-hash="bf2642ced659847cb4402165d2ab3a8e"><span class=en-original lang=en><span>Entangle</span> <var title="">outside port</var>
1988     and <var title="">inside port</var>.</span></li>
1989    
1990     <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
1991     step asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、
1992     次の段階を非同期に実行します。</span></li>
1993    
1994     <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>
1995     interface, with the name <code title=event-connect>connect</code>, which does not bubble, is
1996     not cancelable, has no default action, has a <code title=dom-MessageEvent-data>data</code> attribute whose value
1997     is the empty string and has a <code title=dom-MessageEvent-ports>ports</code> attribute whose
1998     value is an array containing only the newly created port, and
1999     <span>queue a task</span> to dispatch the event at <var title="">worker global scope</var>.</span></li>
2000    
2001     <li>
2002    
2003     <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
2004     <var title="">worker global scope</var>'s list of <span>the
2005     worker's <code>Document</code>s</span></a> the
2006     <code>Document</code> objects in <var title="">docs</var>.</span></p>
2007    
2008     </li>
2009    
2010     <li>
2011    
2012 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
2013     object</span> of the <span title=concept-script>script</span>
2014 wakaba 1.111 that invoked the constructor is a
2015     <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
2016     worker's workers</a> of the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>
2017 wakaba 1.205 object that is the <span title="script's global object">global
2018     object</span> of the <span title=concept-script>script</span>
2019 wakaba 1.111 that invoked the constructor.</span></p>
2020    
2021     </li>
2022    
2023     <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>
2024    
2025 wakaba 1.159 </ol></li>
2026 wakaba 1.111
2027 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>
2028     object. Let <var title="">worker global scope</var> be this new
2029     object.</span></li>
2030 wakaba 1.111
2031     <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
2032     global scope</var> に関連付けます。</span></li>
2033    
2034     <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
2035     <var title="">worker global scope</var> to <var title="">name</var>.</span></li>
2036    
2037 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>
2038 wakaba 1.111 owned by <var title="">worker global scope</var>. Let <var title="">inside port</var> be this new object.</span></li>
2039    
2040     <li><p class="no-ja-translation" data-ja-hash="bf2642ced659847cb4402165d2ab3a8e"><span class=en-original lang=en><span>Entangle</span> <var title="">outside port</var> and
2041     <var title="">inside port</var>.</span></li>
2042    
2043 wakaba 1.159 </ol></li>
2044 wakaba 1.111
2045     <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
2046     steps asynchronously.</span></li>
2047    
2048     <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>
2049     interface, with the name <code title=event-connect>connect</code>, which does not bubble, is not
2050     cancelable, has no default action, has a <code title=dom-MessageEvent-data>data</code> attribute whose value is
2051     the empty string and has a <code title=dom-MessageEvent-ports>ports</code> attribute whose value
2052     is an array containing only the newly created port, and <span>queue
2053     a task</span> to dispatch the event at <var title="">worker global
2054     scope</var>.</span></li>
2055    
2056     <li>
2057    
2058     <p class="no-ja-translation" data-ja-hash="55e64a61fc96598db79195cddb4bb2f9"><span class=en-original lang=en><a href="#add-a-document-to-the-worker's-documents" title="add a document to the worker's documents">Add to
2059     <var title="">worker global scope</var>'s list of <span>the
2060     worker's <code>Document</code>s</span></a> the
2061     <code>Document</code> objects in <var title="">docs</var>.</span></p>
2062    
2063     </li>
2064    
2065     <li>
2066    
2067 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>
2068 wakaba 1.111 of the <span title=concept-script>script</span> that invoked the
2069     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
2070     worker's workers</a> of the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>
2071 wakaba 1.205 object that is the <span title="script's global object">global
2072     object</span> of the <span title=concept-script>script</span>
2073 wakaba 1.111 that invoked the constructor.</span></p>
2074    
2075     </li>
2076    
2077     <li>
2078    
2079 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="562ded8637462848f5c508963ab5eeb4"><span class=en-original lang=en><a href=#run-a-worker>Run a worker</a> for <var title="">scriptURL</var>,
2080 wakaba 1.205 with the <span>script's browsing context</span> of the script that
2081 wakaba 1.168 invoked the method as the <var title="">owner browsing
2082 wakaba 1.210 context</var>, with the <span>origin</span> of the <span>entry
2083 wakaba 1.191 script</span> as the <var title="">owner origin</var>, and with
2084     <var title="">worker global scope</var> as the global scope.</span></p>
2085 wakaba 1.111
2086     </li>
2087    
2088 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
2089     object</span> is either a <code>Window</code> object or an object
2090 wakaba 1.124 implementing the <code><a href=#workerutils>WorkerUtils</a></code> interface.</span></p>
2091 wakaba 1.133
2092     <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
2093     <span>DOM manipulation task source</span>.</span></p>
2094 wakaba 1.124
2095    
2096    
2097 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>
2098 wakaba 1.111
2099 wakaba 1.208 <pre class="idl no-ja-translation" data-ja-hash="30d32a60b3b93cd3d0c6a32d9338b2ee"><span class=en-original lang=en>[Supplemental, NoInterfaceObject]
2100 wakaba 1.154 interface <dfn id=workerutils>WorkerUtils</dfn> {
2101     void <a href=#dom-workerglobalscope-importscripts title=dom-WorkerGlobalScope-importScripts>importScripts</a>(in DOMString... urls);
2102 wakaba 1.208 readonly attribute <a href=#workernavigator>WorkerNavigator</a> <a href=#dom-worker-navigator title=dom-worker-navigator>navigator</a>;
2103 wakaba 1.154 };
2104 wakaba 1.201 <a href=#workerutils>WorkerUtils</a> implements <span>WindowTimers</span>;</span></pre>
2105 wakaba 1.111
2106 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>
2107 wakaba 1.111 objects, etc) are not available to workers in this version of this
2108     specification.</span><span class=ja-translation lang=ja>DOM API (<code>Node</code> オブジェクト、 <code>Document</code>
2109     オブジェクト、その他) は、この版のこの仕様書では労働者に利用可能ではありません。</span></p>
2110    
2111    
2112 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>
2113 wakaba 1.111
2114     <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
2115     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, the user agent must run the
2116     following steps:</span></p>
2117    
2118 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
2119 wakaba 1.111 anything. Abort these steps.</span><span class=ja-translation lang=ja>引数がない場合、何も返さずに返ります。
2120     これらの段階を停止します。</span></li>
2121    
2122     <li><p class="has-ja-translation" data-ja-hash="b89818b453add85fbb5ec1e963e3072c"><span class=en-original lang=en><span title="resolve a url">Resolve</span> each
2123     argument.</span><span class=ja-translation lang=ja>各引数を<span title="resolve a url">解決</span>します。</span></li>
2124    
2125     <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>
2126     exception.</span><span class=ja-translation lang=ja>いずれかが失敗した場合、 <code>SYNTAX_ERR</code> 例外を投げます。</span></li>
2127    
2128     <!--
2129 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
2130 wakaba 1.111 URLs</span> have an <span>origin</span> that is not the <span
2131     title="same origin">same</span> as the origin of the script that
2132 wakaba 1.201 invoked the method, then throw a <code>SECURITY_ERR</code>
2133     exception.</span></p></li>
2134 wakaba 1.111 -->
2135    
2136     <li>
2137    
2138 wakaba 1.210 <p class="no-ja-translation" data-ja-hash="084a0643b126c576729e78d91bb57531"><span class=en-original lang=en>Attempt to <span>fetch</span> each resource identified by the
2139 wakaba 1.205 resulting <span title="absolute URL">absolute URLs</span>, from
2140 wakaba 1.210 the <span>entry script</span>'s <span>origin</span>.</span></p> <!-- not
2141 wakaba 1.191 http-origin privacy sensitive -->
2142 wakaba 1.111
2143     </li>
2144    
2145     <li>
2146    
2147     <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
2148     the first one, run these substeps:</span><span class=ja-translation lang=ja>各引数について、与えられた順に最初のものから、次の部分段階群を走らせます。</span></p>
2149    
2150 wakaba 1.159 <ol><li>
2151 wakaba 1.111
2152     <p class="has-ja-translation" data-ja-hash="a5cd8fb5d75985afdc62f7ac228329d4"><span class=en-original lang=en>Wait for the fetching attempt for the corresponding resource
2153     to complete.</span><span class=ja-translation lang=ja>対応する資源を取得しようとする試みが完了するのを待ちます。</span></p>
2154    
2155     <p class="no-ja-translation" data-ja-hash="c821b5a32a4316df06e95e2117d4d21a"><span class=en-original lang=en>If the fetching attempt failed, throw a
2156     <code>NETWORK_ERR</code> exception and abort all these
2157     steps.</span></p>
2158    
2159 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
2160     Unicode by assuming it was encoded as UTF-8, to obtain its <var title="">source</var>.</span></p>
2161 wakaba 1.111
2162     <p class="no-ja-translation" data-ja-hash="c880bce97c5a1aadccd8989fc4ec8551"><span class=en-original lang=en>Let <var title="">language</var> be JavaScript.</span></p>
2163    
2164     <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
2165     always assumed to be JavaScript, regardless of the MIME
2166     type.</span><span class=ja-translation lang=ja>労働者のスクリプトと同じく、ここでのスクリプトも、 MIME 型に関わらず常に
2167 wakaba 1.183 JavaScript であるとみなします。</span></p>
2168 wakaba 1.111
2169     </li>
2170    
2171     <li>
2172    
2173 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
2174     same global object, browsing context, URL character encoding,
2175     base URL, and script group as the <span title=concept-script>script</span> that was created by the
2176 wakaba 1.111 worker's <a href=#run-a-worker>run a worker</a> algorithm.</span></p>
2177    
2178     <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
2179     returns, fails to parse, fails to catch an exception, or gets
2180     prematurely aborted by the "<a href=#kill-a-worker>kill a worker</a>" or
2181     "<a href=#terminate-a-worker>terminate a worker</a>" algorithms defined above.</span></p>
2182    
2183 wakaba 1.207 <p class="no-ja-translation" data-ja-hash="af201997a3ef245c7e267b8f6206d3a2"><span class=en-original lang=en>If it failed to parse, then throw an ECMAScript
2184     <code>SyntaxError</code> exception and abort all these
2185     steps. <a href=#refsECMA262>[ECMA262]</a></span></p>
2186 wakaba 1.111
2187     <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
2188     aborted, then abort all these steps, letting the exception or
2189     aborting continue to be processed by the script that called the
2190     <code title=dom-WorkerGlobalScope-importScripts><a href=#dom-workerglobalscope-importscripts>importScripts()</a></code>
2191     method.</span></p>
2192    
2193     <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
2194     worker</a>" algorithms abort the script then abort all these
2195     steps.</span></p>
2196    
2197     </li>
2198    
2199 wakaba 1.159 </ol></li>
2200 wakaba 1.156
2201 wakaba 1.208 </ol><h3 id=the-workernavigator-object class="no-ja-translation" data-ja-hash="598e5eccb0b57894677b8fa67d4368c6"><span class=en-original lang=en><span class=secno>5.2 </span>The <code><a href=#workernavigator>WorkerNavigator</a></code> object</span></h3>
2202 wakaba 1.111
2203 wakaba 1.208 <p class="no-ja-translation" data-ja-hash="c7055d2e97a36583e792723acbe528ed"><span class=en-original lang=en>The <dfn id=dom-worker-navigator title=dom-worker-navigator><code>navigator</code></dfn> attribute
2204 wakaba 1.111 of the <code><a href=#workerutils>WorkerUtils</a></code> interface must return an instance of
2205 wakaba 1.208 the <code><a href=#workernavigator>WorkerNavigator</a></code> interface, which represents the
2206     identity and state of the user agent (the client):</span></p>
2207    
2208     <pre class="idl no-ja-translation" data-ja-hash="5bd0c913346992443814f8f9af6a487a"><span class=en-original lang=en>interface <dfn id=workernavigator>WorkerNavigator</dfn> {};
2209     <a href=#workernavigator>WorkerNavigator</a> implements <span>NavigatorID</span>;
2210     <a href=#workernavigator>WorkerNavigator</a> implements <span>NavigatorOnLine</span>;</span></pre>
2211    
2212     <p class="no-ja-translation" data-ja-hash="29e4a02dcad6b0f039ad77e635f7d5bd"><span class=en-original lang=en>Objects implementing the <code><a href=#workernavigator>WorkerNavigator</a></code> interface
2213     also implement the <code>NavigatorID</code> and
2214     <code>NavigatorOnLine</code> interfaces.
2215 wakaba 1.207
2216     <a href=#refsHTML5>[HTML5]</a>
2217    
2218     </span></p>
2219 wakaba 1.111
2220 wakaba 1.208 <p class="no-ja-translation" data-ja-hash="7329ca0ae9fe31ac47218d7ac49a48cf"><span class=en-original lang=en>This <code><a href=#workernavigator>WorkerNavigator</a></code> interface must not exist if the
2221     interface's <span>relevant namespace object</span> is a
2222     <code>Window</code> object. <a href=#refsWEBIDL>[WEBIDL]</a></span></p>
2223 wakaba 1.111
2224    
2225    
2226 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>
2227 wakaba 1.111
2228 wakaba 1.207 <p class="no-ja-translation" data-ja-hash="7a38b8c533febc1df242595b4de0113d"><span class=en-original lang=en>The <code title=dom-opendatabase>openDatabase()</code> and
2229 wakaba 1.111 <code title=dom-opendatabase-sync>openDatabaseSync()</code>
2230 wakaba 1.207 methods are defined in the Web SQL Database specification. <a href=#refsWEBSQL>[WEBSQL]</a></span></p>
2231 wakaba 1.111
2232    
2233    
2234 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>
2235 wakaba 1.111
2236 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
2237     the global scope of scripts whose <span>script's global
2238     object</span> is a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object except for
2239 wakaba 1.111 the following:</span></p>
2240    
2241 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
2242 wakaba 1.111 constructors defined by the XMLHttpRequest specifications, except
2243     that the <span>document response entity body</span> must always be
2244 wakaba 1.170 null. The <span><code>XMLHttpRequest</code> base URL</span> is the
2245     <span>script's base URL</span>; the
2246     <span><code>XMLHttpRequest</code> origin</span> is the script's
2247     <span>origin</span>. <a href=#refsXHR>[XHR]</a></span></li>
2248 wakaba 1.111
2249 wakaba 1.207 <li><p class="no-ja-translation" data-ja-hash="84d1d0bbb1868e6785d0557b217c792a"><span class=en-original lang=en>The interface objects and constructors defined by this
2250     specification.</span></li>
2251 wakaba 1.111
2252 wakaba 1.207 <li><p class="no-ja-translation" data-ja-hash="16842d6b927b98a5c14e320045f6a03c"><span class=en-original lang=en>Constructors defined by specifications that explicitly say
2253     that they should be visible when the <span>script's global
2254     object</span> is a <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code>, a
2255     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>, or an object implementing the
2256     <code><a href=#workerutils>WorkerUtils</a></code> interface; the interfaces of any objects
2257     with such constructors; and the interfaces of any objects made
2258     accessible through APIs exposed by those constructors or made
2259     accessible through interfaces to be implemented by any objects that
2260     are themselves accessible to scripts whose <span>script's global
2261     object</span> implements the <code><a href=#workerutils>WorkerUtils</a></code>
2262     interface.</span></li>
2263    
2264     </ul><p class="note no-ja-translation" data-ja-hash="f1fa4c80358ffead3b2abc663c92d283"><span class=en-original lang=en>These requirements do not override the requirements
2265     defined by the Web IDL specification, in particular concerning the
2266     visibility of interfaces annotated with the <code title="">[NoInterfaceObject]</code> extended attribute.</span></p>
2267 wakaba 1.111
2268    
2269 wakaba 1.207 <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>
2270 wakaba 1.111
2271     <pre class="idl no-ja-translation" data-ja-hash="8d12e26ffacf32cd9d10364c0255ab53"><span class=en-original lang=en>interface <dfn id=workerlocation>WorkerLocation</dfn> {
2272     readonly attribute DOMString <a href=#dom-workerlocation-href title=dom-WorkerLocation-href>href</a>;
2273     readonly attribute DOMString <a href=#dom-workerlocation-protocol title=dom-WorkerLocation-protocol>protocol</a>;
2274     readonly attribute DOMString <a href=#dom-workerlocation-host title=dom-WorkerLocation-host>host</a>;
2275     readonly attribute DOMString <a href=#dom-workerlocation-hostname title=dom-WorkerLocation-hostname>hostname</a>;
2276     readonly attribute DOMString <a href=#dom-workerlocation-port title=dom-WorkerLocation-port>port</a>;
2277     readonly attribute DOMString <a href=#dom-workerlocation-pathname title=dom-WorkerLocation-pathname>pathname</a>;
2278     readonly attribute DOMString <a href=#dom-workerlocation-search title=dom-WorkerLocation-search>search</a>;
2279     readonly attribute DOMString <a href=#dom-workerlocation-hash title=dom-WorkerLocation-hash>hash</a>;
2280     };</span></pre>
2281    
2282     <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
2283     URL</span> set at its creation.</span></p>
2284    
2285     <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>
2286     attribute must return the <span>absolute URL</span> that the object
2287     represents.</span></p>
2288    
2289 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
2290     of <span>URL decomposition IDL attributes</span>, <dfn id=dom-workerlocation-protocol title=dom-WorkerLocation-protocol><code>protocol</code></dfn>,
2291 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>,
2292     <dfn id=dom-workerlocation-pathname title=dom-WorkerLocation-pathname><code>pathname</code></dfn>,
2293     <dfn id=dom-workerlocation-search title=dom-WorkerLocation-search><code>search</code></dfn>,
2294     and <dfn id=dom-workerlocation-hash title=dom-WorkerLocation-hash><code>hash</code></dfn>. These must
2295 wakaba 1.172 follow the rules given for URL decomposition IDL attributes, with the
2296 wakaba 1.111 <span title=concept-uda-input>input</span> being the
2297     <span>absolute URL</span> that the object represents (same as the
2298     <code title=dom-WorkerLocation-href><a href=#dom-workerlocation-href>href</a></code> attribute), and
2299     the <span title=concept-uda-setter>common setter action</span>
2300 wakaba 1.207 being a no-op, since the attributes are defined to be readonly.
2301    
2302     <a href=#refsHTML5>[HTML5]</a>
2303    
2304     </span></p>
2305 wakaba 1.208
2306     <p class="no-ja-translation" data-ja-hash="aec7b7de7c3e78e1e158f6819d00fe0e"><span class=en-original lang=en>The <code><a href=#workerlocation>WorkerLocation</a></code> interface must not exist if the
2307     interface's <span>relevant namespace object</span> is a
2308     <code>Window</code> object. <a href=#refsWEBIDL>[WEBIDL]</a></span></p>
2309    
2310 wakaba 1.176
2311 wakaba 1.195 <!--START vCard--><!--START vEvent-->
2312 wakaba 1.111
2313 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-->
2314 wakaba 1.111
2315 wakaba 1.195 <!--END vCard--><!--END vEvent-->
2316 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>
2317 wakaba 1.195 <!--START vCard--><!--START vEvent-->
2318 wakaba 1.157
2319 wakaba 1.159 <dl><dt id=refsDOMCORE class="no-ja-translation" data-ja-hash="bc16cdf6ab9118cf4065dd05b4725405"><span class=en-original lang=en>[DOMCORE]</span></dt>
2320 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
2321     Object Model (DOM) Level 3 Core Specification</a></cite>, A. Le
2322     Hors, P. Le Hegaret, L. Wood, G. Nicol, J. Robie, M. Champion,
2323     S. Byrnes. W3C, April 2004.</span></dd>
2324     <!--
2325     <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
2326     DOM Core</a></cite>, S. Pieters. W3C, June 2009.</span></dd>
2327     -->
2328    
2329 wakaba 1.157 <dt id=refsDOMEVENTS class="no-ja-translation" data-ja-hash="4acfe87f4af565e925ab2c05d359f9b1"><span class=en-original lang=en>[DOMEVENTS]</span></dt>
2330     <!--
2331     <dd class="no-ja-translation" data-ja-hash="fa7c84f91358fa9f83f95423f9d0c22a"><span class=en-original lang=en><cite><a
2332     href="http://www.w3.org/TR/DOM-Level-3-Events/">Document Object
2333     Model (DOM) Level 3 Events Specification</a></cite>,
2334     B. H&ouml;hrmann, P. Le Hegaret, T. Pixley. W3C, December
2335     2007.</span></dd>
2336     -->
2337     <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
2338     Object Model (DOM) Level 3 Events Specification</a></cite>,
2339     D. Schepers. W3C, July 2009.</span></dd>
2340    
2341     <dt id=refsECMA262 class="no-ja-translation" data-ja-hash="ef033ad77bafa67936e26b8da6095aed"><span class=en-original lang=en>[ECMA262]</span></dt>
2342     <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
2343     Language Specification</a></cite>. ECMA, December 1999.</span></dd>
2344    
2345     <dt id=refsHTML5 class="no-ja-translation" data-ja-hash="c8334fcd95059386411d0d14d5bdbeab"><span class=en-original lang=en>[HTML5]</span></dt>
2346     <!--
2347 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>,
2348 wakaba 1.157 I. Hickson, D. Hyatt. W3C, April 2009.</span></dd>
2349 wakaba 1.171 <dd class="no-ja-translation" data-ja-hash="a313fc8fc4a8517dbed899bae6562d24"><span class=en-original lang=en><cite><a
2350     href="http://www.w3.org/html/wg/html5/">HTML5</a></cite>,
2351     I. Hickson, D. Hyatt. W3C, August 2009.</span></dd>
2352 wakaba 1.157 -->
2353 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>,
2354     I. Hickson. WHATWG, August 2009.</span></dd>
2355 wakaba 1.157
2356 wakaba 1.158 <dt id=refsRFC2119 class="no-ja-translation" data-ja-hash="160a6b695c5227ccd5c7beb0e6d5ec22"><span class=en-original lang=en>[RFC2119]</span></dt>
2357     <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
2358     RFCs to Indicate Requirement Levels</a></cite>, S. Bradner. IETF, March
2359     1997.</span></dd>
2360    
2361 wakaba 1.207 <dt id=refsWEBSQL class="no-ja-translation" data-ja-hash="691e93badc6912ec8c4f60bfd9d7cef9"><span class=en-original lang=en>[WEBSQL]</span></dt>
2362     <dd class="no-ja-translation" data-ja-hash="0156df1ea73258c964994795cff79a24"><span class=en-original lang=en><cite><a href=http://dev.w3.org/html5/webdatabase/>Web SQL
2363     Database</a></cite>, I. Hickson. W3C, July 2009.</span></dd>
2364 wakaba 1.158
2365     <dt id=refsWEBIDL class="no-ja-translation" data-ja-hash="c36d8342bfa57c496487e73bea1fb4d2"><span class=en-original lang=en>[WEBIDL]</span></dt>
2366     <!--
2367     <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
2368     IDL</a></cite>, C. McCormack. W3C, December 2008.</span></dd>
2369     -->
2370     <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
2371     IDL</a></cite>, C. McCormack. W3C, July 2009.</span></dd>
2372 wakaba 1.157
2373     <dt id=refsXHR class="no-ja-translation" data-ja-hash="3ba5cbb19a05fab102ccbee69603b1fc"><span class=en-original lang=en>[XHR]</span></dt>
2374     <!--
2375     <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
2376     Object</a></cite>, A. van Kesteren. W3C, April
2377     2008.</span></dd>
2378     -->
2379 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>,
2380 wakaba 1.157 A. van Kesteren. W3C, June 2009.</span></dd>
2381    
2382 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 -->
2383 wakaba 1.111
2384 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
2385 wakaba 1.111
2386     Aaron Boodman,
2387 wakaba 1.159 &#1040;&#1083;&#1077;&#1082;&#1089;&#1077;&#1081; &#1055;&#1088;&#1086;&#1089;&#1082;&#1091;&#1088;&#1103;&#1082;&#1086;&#1074; (Alexey Proskuryakov),
2388 wakaba 1.111 Anne van Kesteren,
2389     Ben Turner,
2390     Dmitry Titov,
2391     Drew Wilson,
2392     Jeremy Orlow,
2393     Jonas Sicking,
2394     Justin James,
2395     Kevin Hakanson,
2396     Maciej Stachowiak,
2397     Michael Nordman,
2398     Mike Smith,
2399    
2400     and
2401    
2402     Philip Taylor
2403    
2404 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>
2405 wakaba 1.111
2406     <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
2407     technology and whose experience has been a huge influence on this
2408     specification.</span><span class=ja-translation lang=ja>Gears チームの方々にも非常に感謝します。
2409     Gears チームの方々はこの技術を開拓し、その経験はこの仕様書にも多大な影響を与えています。
2410     </span></p>
2411    
2412    

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24