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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24