/[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.61 - (hide annotations) (download)
Tue Mar 31 06:16:15 2009 UTC (17 years, 3 months ago) by wakaba
Branch: MAIN
Changes since 1.60: +2 -2 lines
make

1 wakaba 1.53 <!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.32 <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.53 <script src=ja-script defer async></script><link href=http://www.whatwg.org/images/icon rel=icon><body class=draft>
6 wakaba 1.1 <div class=head>
7 wakaba 1.53 <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     src=http://www.whatwg.org/images/logo></a></span></p>
9 wakaba 1.42 <h1 class="no-ja-translation" data-ja-hash="6cb7eb9696d986359fa3a78c4b8e60dc"><span class=en-original lang=en>Web Workers</span></h1>
10 wakaba 1.61 <h2 class="no-num no-toc has-ja-translation" data-ja-hash="8a7847394b9b718bd84c2d29d478640c" data-ja-real-hash="da924bb62b80a502a3e36e171a2f81c4" id=draft-recommendation-&mdash;-date:-01-jan-1901><span class=en-original lang=en>Draft Recommendation &mdash; 31 March 2009</span><span class=ja-translation lang=ja>勧告案<ins class=ja-note>の非公式和訳</ins> &mdash;
11     <ins class=ja-note>(原文出版日)</ins> 31 March 2009</span></h2>
12 wakaba 1.53 <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     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 wakaba 1.32 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 wakaba 1.33 <ins class="ja-note cover-ja-note" lang=ja>
23 wakaba 1.38 <p>この文書は、 WHATWG 仕様書の日本語訳です。 正式な仕様書は英語版だけであり、この日本語訳はあくまで参考としてご利用ください。
24 wakaba 1.32
25 wakaba 1.38 <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 wakaba 1.32
27 wakaba 1.53 <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 wakaba 1.32
31 wakaba 1.53 <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 wakaba 1.32
35     <p><button type=button onclick="
36     document.getElementById ('style-only-ja').disabled = false;
37     document.getElementById ('style-both-en-ja').disabled = true;
38 wakaba 1.33 ">日本語訳だけ表示 <span lang=en>Show only Japanese translation</span></button>
39 wakaba 1.32 <p><button type=button onclick="
40     document.getElementById ('style-only-ja').disabled = true;
41     document.getElementById ('style-both-en-ja').disabled = false;
42 wakaba 1.33 ">英和対訳表示 <span lang=en>Show both English and Japanese texts</span></button>
43 wakaba 1.32 </ins>
44    
45     <p><span><!-- dummy --></span></p>
46 wakaba 1.53 <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     <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     </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     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.1 </div>
67    
68 wakaba 1.53 <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>
69 wakaba 1.32
70 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="a4f61aa99f0d87d5d87b6e07071a74da"><span class=en-original lang=en>This specification defines an API that allows Web application
71     authors to spawn background workers running scripts in parallel to
72     their main page. This allows for thread-like operation with
73     message-passing as the coordination mechanism.</span><span class=ja-translation lang=ja>この仕様書は、 Web アプリケーションで、主たる頁とは並列に、
74 wakaba 1.14 背景労働者スクリプトを走らせるための API を定義します。
75 wakaba 1.53 これにより、メッセージ・パッシングによるスレッド的操作を協調機構として利用できるようになります。</span></p>
76 wakaba 1.1
77 wakaba 1.31
78 wakaba 1.53 <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>
79 wakaba 1.1
80 wakaba 1.53 <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
81     changing on a daily if not hourly basis in response to comments and
82     as a general part of its development process. Comments are very
83     welcome, please send them to <a href=mailto:[email protected]>[email protected]</a>. Thank
84     you.</span><span class=ja-translation lang=ja><strong>この文書は作業中です!</strong>
85     この文書は、コメントへの対応や通常の開発の過程として、
86     毎時毎分とは言い過ぎですが毎日のペースで変更されています。
87     コメントは非常に歓迎していますので、
88     <a href=mailto:[email protected]>[email protected]</a>
89     へお送りください。よろしくお願いします。</span></p>
90    
91     <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>
92    
93     <p class="has-ja-translation" data-ja-hash="f0a0e89202a0b75b7cf2314905ae258d"><span class=en-original lang=en>Implementors should be aware that this specification is not
94     stable. <strong>Implementors who are not taking part in the
95     discussions are likely to find the specification changing out from
96     under them in incompatible ways.</strong> Vendors interested in
97     implementing this specification before it eventually reaches the
98     call for implementations should join the <a href=/mailing-list>WHATWG mailing list</a> and take part in the
99     discussions.</span><span class=ja-translation lang=ja>実装者は、この仕様書が安定していないことに注意するべきです。
100     <strong>実装者は議論に参加しておかないと、
101     仕様がその実装とは非互換に変更されてしまうかもしれません。</strong>
102     この仕様書がいずれ実装呼び掛けの段階に達するのよりも前にこの仕様を実装したい販売者は、
103     <a href=http://www.whatwg.org/mailing-list>WHATWG メイリング・リスト</a>に参加し、
104     議論に加わるべきです。</span></p>
105 wakaba 1.1
106 wakaba 1.53 <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
107     specifications are identical from the table of contents onwards.</span></p>
108 wakaba 1.1
109 wakaba 1.53 <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     <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     </span><ol>
127     <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     </span><ol>
133     <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     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="2d6e1e5868fff5fcbb2e9fc349fef7f1"><span class=en-original lang=en><a href=#base-urls-and-origins-of-workers><span class=secno>4.2 </span>Base URLs and origins of workers</a></span></li>
137     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="1e7058220085c30c6bb2a12a3c89679e"><span class=en-original lang=en><a href=#decoding-scripts><span class=secno>4.3 </span>Decoding scripts</a></span></li>
138     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="e2bf69c265f0577e8eda8540795eac46"><span class=en-original lang=en><a href=#the-event-loop><span class=secno>4.4 </span>The event loop</a></span></li>
139     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="0c9332df8c8325c30d4cefbc5cfdd6c8"><span class=en-original lang=en><a href="#the-worker's-ports"><span class=secno>4.5 </span>The worker's ports</a></span></li>
140 wakaba 1.58 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="5446f38a420881f029c7a587e3b49523"><span class=en-original lang=en><a href=#processing-model><span class=secno>4.6 </span>Processing model</a></span></li>
141     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="d8bba28047e39857c758bfb25576078e"><span class=en-original lang=en><a href=#runtime-script-errors><span class=secno>4.7 </span>Runtime script errors</a></span></li>
142     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="e415bb73deb1eb37d58b2c426c2891bf"><span class=en-original lang=en><a href=#creating-workers><span class=secno>4.8 </span>Creating workers</a>
143 wakaba 1.53 </span><ol>
144 wakaba 1.58 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="fd7fce5cf761f81e7ccde31c886c4e88"><span class=en-original lang=en><a href=#the-abstractworker-abstract-interface><span class=secno>4.8.1 </span>The <code>AbstractWorker</code> abstract interface</a></span></li>
145     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="174a24e7617617691c1fea0de7a19411"><span class=en-original lang=en><a href=#dedicated-workers-and-the-worker-interface><span class=secno>4.8.2 </span>Dedicated workers and the <code>Worker</code> interface</a></span></li>
146     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="4ffcaeb7e6840a21cd2cce4bda60ecdd"><span class=en-original lang=en><a href=#shared-workers-and-the-sharedworker-interface><span class=secno>4.8.3 </span>Shared workers and the <code>SharedWorker</code> interface</a></span></ol></ol></li>
147 wakaba 1.53 <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>
148     </span><ol>
149     <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>
150 wakaba 1.56 <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="91054561db04b2213a3534dc54ef2c3b"><span class=en-original lang=en><a href=#the-navigator-object><span class=secno>5.2 </span>The <code title=worker-Navigator>Navigator</code> object</a></span></li>
151 wakaba 1.53 <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>
152     <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>
153     <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>
154     <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>
155     <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>
156     <!--end-toc-->
157     <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>
158 wakaba 1.32
159 wakaba 1.42 <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>
160    
161 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="585b83d0801ae75a14554d8d2c737fb2"><span class=en-original lang=en><em>This section is non-normative.</em></span><span class=ja-translation lang=ja><em>この節は規定の一部ではありません。</em></span></p>
162 wakaba 1.42
163 wakaba 1.53 <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
164     background independently of any user interface scripts.</span></p>
165 wakaba 1.42
166 wakaba 1.53 <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
167     scripts that respond to clicks or other user interactions, and
168     allows long tasks to be executed without yielding to keep the page
169     responsive.</span></p>
170 wakaba 1.42
171 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="52e3c8127ee80a92ae3709986b8f2450"><span class=en-original lang=en>Workers (as these background scripts are called herein) are
172     relatively heavy-weight, and are not intended to be used in large
173     numbers. For example, it would be inappropriate to launch one worker
174     for each pixel of a four megapixel image. The examples below show
175     some appropriate uses of workers.</span></p>
176 wakaba 1.42
177 wakaba 1.53 <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
178     start-up performance cost, and a high per-instance memory cost.</span></p>
179 wakaba 1.42
180 wakaba 1.32
181 wakaba 1.53 <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>
182 wakaba 1.32
183 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="585b83d0801ae75a14554d8d2c737fb2"><span class=en-original lang=en><em>This section is non-normative.</em></span><span class=ja-translation lang=ja><em>この節は規定の一部ではありません。</em></span></p>
184 wakaba 1.32
185 wakaba 1.53 <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
186     following subsections show various examples of this use.</span><span class=ja-translation lang=ja>労働者は色々なことに使えます。次の各節では、色々な使い方の例を示します。</span></p>
187 wakaba 1.32
188 wakaba 1.53 <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>
189 wakaba 1.1
190 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="585b83d0801ae75a14554d8d2c737fb2"><span class=en-original lang=en><em>This section is non-normative.</em></span><span class=ja-translation lang=ja><em>この節は規定の一部ではありません。</em></span></p>
191 wakaba 1.1
192 wakaba 1.53 <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
193     expensive task without interrupting the user interface.</span><span class=ja-translation lang=ja>労働者の一番単純な用法は、計算的に高価な仕事を利用者界面を中断させずに実行するというものです。</span></p>
194 wakaba 1.23
195 wakaba 1.53 <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
196     (na&iuml;vely) compute prime numbers, and progressively displays the
197     most recently found prime number.</span><span class=ja-translation lang=ja>この例では、主たる文書が労働者を作って素数を (素朴な方法で) 計算させ、
198     新しく見つかった素数を順番に表示してゆきます。</span></p>
199 wakaba 1.32
200 wakaba 1.53 <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>
201    
202     <pre class="no-ja-translation" data-ja-hash="45b861d46157f155d38040db723bafd1"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
203     &lt;html&gt;
204     &lt;head&gt;
205     &lt;title&gt;Worker example: One-core computation&lt;/title&gt;
206     &lt;/head&gt;
207     &lt;body&gt;
208     &lt;p&gt;The highest prime number discovered so far is: &lt;output id="result"&gt;&lt;/output&gt;&lt;/p&gt;
209     &lt;script&gt;
210 wakaba 1.29 var worker = new Worker('worker.js');
211     worker.onmessage = function (event) {
212 wakaba 1.42 document.getElementById('result').textContent = event.data;
213 wakaba 1.23 };
214 wakaba 1.53 &lt;/script&gt;
215     &lt;/body&gt;
216     &lt;/html&gt;</span></pre>
217    
218     <p class="no-ja-translation" data-ja-hash="64b5d9bd2853f85edab220de5a199787"><span class=en-original lang=en>The <code title=dom-Worker><a href=#dom-worker>Worker()</a></code> constructor call
219     creates a worker and returns a <code><a href=#worker>Worker</a></code> object
220     representing that worker, which is used to communicate with the
221     worker. That object's <code title=handler-Worker-onmessage><a href=#handler-worker-onmessage>onmessage</a></code> event handler
222     attribute allows the code to receive messages from the worker.</span></p>
223 wakaba 1.23
224 wakaba 1.53 <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>
225 wakaba 1.32
226 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="35390f08d92125ad461fd6bb5969cb0c"><span class=en-original lang=en>var n = 1;
227 wakaba 1.23 search: while (true) {
228     n += 1;
229     for (var i = 2; i &lt;= Math.sqrt(n); i += 1)
230     if (n % i == 0)
231     continue search;
232     // found a prime!
233 wakaba 1.29 postMessage(n);
234 wakaba 1.36 }</span></pre>
235 wakaba 1.23
236 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="63adff74dd373b4b6a8a224b22ba9662"><span class=en-original lang=en>The bulk of this code is simply an unoptimised search for a prime
237     number. To send a message back to the page, the <code title=dom-DedicatedWorkerGlobalScope-postMessage><a href=#dom-dedicatedworkerglobalscope-postmessage>postMessage()</a></code>
238     method is used to post a message when a prime is found.</span></p>
239    
240     <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>
241 wakaba 1.23
242    
243 wakaba 1.53
244     <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>
245    
246     <p class="has-ja-translation" data-ja-hash="585b83d0801ae75a14554d8d2c737fb2"><span class=en-original lang=en><em>This section is non-normative.</em></span><span class=ja-translation lang=ja><em>この節は規定の一部ではありません。</em></span></p>
247    
248     <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
249     task is to listen for notifications from the server, and, when
250     appropriate, either add or remove data from the client-side
251     database.</span></p>
252    
253     <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
254     page, the main page can start the worker by just doing:</span><span class=ja-translation lang=ja>労働者と主たる頁の間に通信は発生しませんので、
255     主たる頁は単に次のようにするだけで労働者を開始できます。</span></p>
256    
257     <pre class="no-ja-translation" data-ja-hash="c87d2a32789642a7a7353364dffa7c04"><span class=en-original lang=en>&lt;script&gt;
258 wakaba 1.30 new Worker('worker.js');
259 wakaba 1.53 &lt;/script&gt;</span></pre>
260 wakaba 1.23
261 wakaba 1.53 <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>
262 wakaba 1.32
263 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="cfd35229b68e597b6a21322a3e3c1aea"><span class=en-original lang=en>var server = new WebSocket('ws://whatwg.org/database');
264 wakaba 1.25 var database = openDatabase('demobase', '1.0', 'Demo Database', 10240);
265 wakaba 1.23 server.onmessage = function (event) {
266     // data is in the format "command key value"
267 wakaba 1.42 var data = event.data.split(' ');
268 wakaba 1.23 switch (data[0]) {
269     case '+':
270     database.transaction(function(tx) {
271     tx.executeSql('INSERT INTO pairs (key, value) VALUES (?, ?)', data[1], data[2]);
272     });
273     case '-':
274     database.transaction(function(tx) {
275     tx.executeSql('DELETE FROM pairs WHERE key=? AND value=?', data[1], data[2]);
276     });
277     }
278 wakaba 1.36 };</span></pre>
279 wakaba 1.23
280 wakaba 1.53 <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>
281     mechanism and opens the local database (which, we presume, has been
282     created earlier). The worker then just listens for messages from the
283     server and acts on them as appropriate, forever (or until the main
284     page is closed).</span></p>
285    
286     <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
287     this example online</a>. (This example will not actually function,
288     since the server does not actually exist and the database is not
289     created by this sample code.)</span></p>
290    
291    
292    
293     <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>
294    
295     <p class="has-ja-translation" data-ja-hash="585b83d0801ae75a14554d8d2c737fb2"><span class=en-original lang=en><em>This section is non-normative.</em></span><span class=ja-translation lang=ja><em>この節は規定の一部ではありません。</em></span></p>
296    
297     <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
298     fetching stock updates for at regular intervals, and one for
299     fetching performing search queries that the user requests.</span><span class=ja-translation lang=ja>この例では、主たる文書は2つの労働者を使います。
300     1つは一定間隔で株価の更新を取得するためのもので、もう1つは利用者の要求した検索の照会を行う取得のためのものです。</span></p>
301    
302     <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>
303    
304     <pre class="no-ja-translation" data-ja-hash="3cdcbb1d703caa1a07875e4a0bddd063"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
305     &lt;html&gt;
306     &lt;head&gt;
307     &lt;title&gt;Worker example: Stock ticker&lt;/title&gt;
308     &lt;script&gt;
309 wakaba 1.23 // TICKER
310     var symbol = 'GOOG'; // default symbol to watch
311 wakaba 1.29 var ticker = new Worker('ticker.js');
312 wakaba 1.23
313     // SEARCHER
314 wakaba 1.29 var searcher = new Worker('searcher.js');
315 wakaba 1.23 function search(query) {
316 wakaba 1.29 searcher.postMessage(query);
317 wakaba 1.23 }
318    
319     // SYMBOL SELECTION UI
320     function select(newSymbol) {
321     symbol = newSymbol;
322 wakaba 1.29 ticker.postMessage(symbol);
323 wakaba 1.23 }
324 wakaba 1.53 &lt;/script&gt;
325     &lt;/head&gt;
326     &lt;body&gt;
327     &lt;p&gt;&lt;output id="symbol"&gt;&lt;/output&gt; &lt;output id="value"&gt;&lt;/output&gt;&lt;/p&gt;
328     &lt;script&gt;
329 wakaba 1.29 ticker.onmessage = function (event) {
330 wakaba 1.42 var data = event.data.split(' ');
331 wakaba 1.23 document.getElementById('symbol').textContent = data[0];
332     document.getElementById('value').textContent = data[1];
333     };
334 wakaba 1.29 ticker.postMessage(symbol);
335 wakaba 1.53 &lt;/script&gt;
336     &lt;p&gt;&lt;label&gt;Search: &lt;input type="text" oninput="search(this.value)"&gt;&lt;/label&gt;&lt;/p&gt;
337     &lt;ul id="results"&gt;&lt;/ul&gt;
338     &lt;script&gt;
339 wakaba 1.29 searcher.onmessage = function (event) {
340 wakaba 1.42 var data = event.data.split(' ');
341 wakaba 1.23 var results = document.getElementById('results');
342     while (results.hasChildNodes()) // clear previous results
343     results.removeChild(results.firstChild);
344     for (var i = 0; i &lt; data.length; i += 1) {
345     // add a list item with a button for each result
346     var li = document.createElement('li');
347     var button = document.createElement('button');
348     button.value = data[i];
349     button.type = 'button';
350     button.onclick = function () { select(this.value); };
351     button.textContent = data[i];
352     li.appendChild(button);
353     results.appendChild(li);
354     }
355     };
356 wakaba 1.53 &lt;/script&gt;
357     &lt;p&gt;(The data in this example is not real. Try searching for "Google" or "Apple".)&lt;/p&gt;
358     &lt;/body&gt;
359     &lt;/html&gt;</span></pre>
360    
361     <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
362     network calls. This library is as follows:</span><span class=ja-translation lang=ja>両労働者は実際のネットワークの呼び出しを行う共通のライブラリーを使います。
363     このライブラリーは次の通りです。</span></p>
364 wakaba 1.23
365 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="764d750a19834bf904d276466724339c"><span class=en-original lang=en>function get(url) {
366 wakaba 1.29 try {
367     var xhr = new XMLHttpRequest();
368     xhr.open('GET', url, false);
369     xhr.send();
370     return xhr.responseText;
371     } catch (e) {
372     return ''; // turn all errors into empty results
373     }
374 wakaba 1.36 }</span></pre>
375 wakaba 1.23
376 wakaba 1.53 <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>
377 wakaba 1.23
378 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="66ef47eaf421ea8066871b71807859be"><span class=en-original lang=en>importScripts('io.js');
379 wakaba 1.23 var timer;
380     var symbol;
381     function update() {
382 wakaba 1.29 postMessage(symbol + ' ' + get('stock.cgi?' + symbol));
383 wakaba 1.23 timer = setTimeout(update, 10000);
384     }
385 wakaba 1.29 onmessage = function (event) {
386 wakaba 1.23 if (timer)
387     clearTimeout(timer);
388 wakaba 1.42 symbol = event.data;
389 wakaba 1.23 update();
390 wakaba 1.36 };</span></pre>
391 wakaba 1.23
392 wakaba 1.53 <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>
393 wakaba 1.23
394 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="ac0353e2a69ae5ffdc861cca404ef9f0"><span class=en-original lang=en>importScripts('io.js');
395 wakaba 1.29 onmessage = function (event) {
396 wakaba 1.42 postMessage(get('search.cgi?' + event.data));
397 wakaba 1.36 };</span></pre>
398 wakaba 1.23
399 wakaba 1.53 <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>
400    
401    
402     <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>
403 wakaba 1.23
404 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="585b83d0801ae75a14554d8d2c737fb2"><span class=en-original lang=en><em>This section is non-normative.</em></span><span class=ja-translation lang=ja><em>この節は規定の一部ではありません。</em></span></p>
405 wakaba 1.32
406 wakaba 1.53 <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
407     are all viewing the same map. All the windows share the same map
408     information, with a single worker coordinating all the viewers. Each
409     viewer can move around independently, but if they set any data on
410     the map, all the viewers are updated.</span></p>
411 wakaba 1.32
412 wakaba 1.53 <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
413     the viewers:</span><span class=ja-translation lang=ja>主たる頁は特に何もなく、単に表示器を開くためだけのものです。</span></p>
414    
415     <pre class="no-ja-translation" data-ja-hash="e27ef9096d7661be60af654b55813524"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
416     &lt;html&gt;
417     &lt;head&gt;
418     &lt;title&gt;Workers example: Multiviewer&lt;/title&gt;
419     &lt;script&gt;
420 wakaba 1.23 function openViewer() {
421     window.open('viewer.html');
422     }
423 wakaba 1.53 &lt;/script&gt;
424     &lt;/head&gt;
425     &lt;body&gt;
426     &lt;p&gt;&lt;button type=button onclick="openViewer()"&gt;Open a new
427     viewer&lt;/button&gt;&lt;/p&gt;
428     &lt;p&gt;Each viewer opens in a new window. You can have as many viewers
429     as you like, they all view the same data.&lt;/p&gt;
430     &lt;/body&gt;
431     &lt;/html&gt;</span></pre>
432    
433     <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>
434    
435     <pre class="no-ja-translation" data-ja-hash="6f90bb09ab3ecf0dc089f72f0f7bf32b"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
436     &lt;html&gt;
437     &lt;head&gt;
438     &lt;title&gt;Workers example: Multiviewer viewer&lt;/title&gt;
439     &lt;script&gt;
440 wakaba 1.29 var worker = new SharedWorker('worker.js', 'core');
441 wakaba 1.23
442     // CONFIGURATION
443     function configure(event) {
444 wakaba 1.42 if (event.data.substr(0, 4) != 'cfg ') return;
445     var name = event.data.substr(4).split(' ', 1);
446 wakaba 1.23 // update display to mention our name is name
447     document.getElementsByTagName('h1')[0].textContent += ' ' + name;
448     // no longer need this listener
449 wakaba 1.25 worker.port.removeEventListener('message', configure, false);
450 wakaba 1.23 }
451 wakaba 1.30 worker.port.addEventListener('message', configure, false);
452 wakaba 1.23
453     // MAP
454     function paintMap(event) {
455 wakaba 1.42 if (event.data.substr(0, 4) != 'map ') return;
456     var data = event.data.substr(4).split(',');
457 wakaba 1.23 // display tiles data[0] .. data[8]
458     var canvas = document.getElementById('map');
459     var context = canvas.getContext('2d');
460     for (var y = 0; y &lt; 3; y += 1) {
461     for (var x = 0; x &lt; 3; x += 1) {
462     var tile = data[y * 3 + x];
463     if (tile == '0')
464     context.fillStyle = 'green';
465     else
466     context.fillStyle = 'maroon';
467     fillRect(x * 50, y * 50, 50, 50);
468     }
469     }
470     }
471 wakaba 1.30 worker.port.addEventListener('message', paintMap, false);
472 wakaba 1.23
473     // PUBLIC CHAT
474     function updatePublicChat(event) {
475 wakaba 1.42 if (event.data.substr(0, 4) != 'txt ') return;
476     var name = event.data.substr(4).split(' ', 1);
477     var message = event.data.substr(4 + length(name) + 1);
478 wakaba 1.53 // display "&lt;name&gt; message" in public chat
479 wakaba 1.23 var dialog = document.getElementById('public');
480     var dt = document.createElement('dt');
481     dt.textContent = name;
482     dialog.appendChild(dt);
483     var dd = document.createElement('dd');
484     dd.textContent = message;
485     dialog.appendChild(dd);
486     }
487 wakaba 1.30 worker.port.addEventListener('message', updatePublicChat, false);
488 wakaba 1.23
489     // PRIVATE CHAT
490     function startPrivateChat(event) {
491 wakaba 1.42 if (event.data.substr(0, 4) != 'msg ') return;
492     var name = event.data.substr(4).split(' ', 1);
493 wakaba 1.53 var port = event.ports[0];
494 wakaba 1.23 // display a private chat UI
495     var ul = document.getElementById('private');
496     var li = document.createElement('li');
497     var h3 = document.createElement('h3');
498     h3.textContent = 'Private chat with ' + name;
499     li.appendChild(h3);
500     var dialog = document.createElement('dialog');
501     var addMessage = function(name, message) {
502     var dt = document.createElement('dt');
503     dt.textContent = name;
504     dialog.appendChild(dt);
505     var dd = document.createElement('dd');
506     dd.textContent = message;
507     dialog.appendChild(dd);
508     };
509     port.onmessage = function (event) {
510 wakaba 1.42 addMessage(name, event.data);
511 wakaba 1.23 };
512     li.appendChild(dialog);
513     var form = document.createElement('form');
514     var p = document.createElement('p');
515     var input = document.createElement('input');
516     input.size = 50;
517     p.appendChild(input);
518     p.appendChild(document.createTextNode(' '));
519     var button = document.createElement('button');
520     button.textContent = 'Post';
521     p.appendChild(button);
522     form.onsubmit = function () {
523     port.postMessage(input.value);
524     addMessage('me', input.value);
525     input.value = '';
526     return false;
527     };
528     form.appendChild(p);
529     li.appendChild(form);
530     }
531 wakaba 1.30 worker.port.addEventListener('message', startPrivateChat, false);
532 wakaba 1.53 &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 wakaba 1.36 </span></pre>
559 wakaba 1.23
560 wakaba 1.53 <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 wakaba 1.23
563 wakaba 1.53 <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 wakaba 1.36 複数の事象聴取器を付与し、それぞれが、それがメッセージに関連するかどうかを見るためにさらりと検査を行っています。
572     この例では大きな違いにはなりませんが、複数の著者が労働者と通信するために1つのポートを使って協調したい場合には、
573 wakaba 1.53 独立した符号にできるので変更がある度に1つの事象取扱関数をいじらざるを得なくて済みます。</span></p>
574 wakaba 1.23
575 wakaba 1.53 <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 wakaba 1.23
580 wakaba 1.53 <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     <pre class="no-ja-translation" data-ja-hash="2a6833ffcfe9252a21a8582ad69a4adf"><span class=en-original lang=en>
583 wakaba 1.23 var nextName = 0;
584     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 wakaba 1.53 if (x &gt;= map[0].length) return wrapX(x - map[0].length);
603 wakaba 1.23 return x;
604     }
605    
606     function wrapY(y) {
607     if (y &lt; 0) return wrapY(y + map.length);
608 wakaba 1.53 if (y &gt;= map[0].length) return wrapY(y - map.length);
609 wakaba 1.23 return y;
610     }
611    
612 wakaba 1.29 function sendMapData(callback) {
613 wakaba 1.23 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 wakaba 1.29 callback('map ' + data);
622 wakaba 1.23 }
623    
624     var viewers = {};
625     onconnect = function (event) {
626 wakaba 1.53 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 wakaba 1.23 };
633    
634     function getMessage(event) {
635 wakaba 1.42 switch (event.data.substr(0, 4)) {
636 wakaba 1.23 case 'mov ':
637 wakaba 1.42 var direction = event.data.substr(4);
638 wakaba 1.23 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 wakaba 1.29 sendMapData(event.target.postMessage);
649 wakaba 1.23 break;
650     case 'set ':
651 wakaba 1.42 var value = event.data.substr(4);
652 wakaba 1.23 map[event.target._data.y][event.target._data.x] = value;
653     for (var viewer in viewers)
654 wakaba 1.29 sendMapData(viewers[viewer].port.postMessage);
655 wakaba 1.23 break;
656     case 'txt ':
657     var name = event.target._name;
658 wakaba 1.42 var message = event.data.substr(4);
659 wakaba 1.23 for (var viewer in viewers)
660     viewers[viewer].port.postMessage('txt ' + name + ' ' + message);
661     break;
662     case 'msg ':
663     var party1 = event._data;
664 wakaba 1.42 var party2 = viewers[event.data.substr(4).split(' ', 1)];
665 wakaba 1.23 if (party2) {
666     var channel = new MessageChannel();
667 wakaba 1.53 party1.port.postMessage('msg ' + party2.name, [channel.port1]);
668     party2.port.postMessage('msg ' + party1.name, [channel.port2]);
669 wakaba 1.23 }
670     break;
671     }
672 wakaba 1.36 }</span></pre>
673 wakaba 1.23
674 wakaba 1.53 <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     <p class="has-ja-translation" data-ja-hash="585b83d0801ae75a14554d8d2c737fb2"><span class=en-original lang=en><em>This section is non-normative.</em></span><span class=ja-translation lang=ja><em>この節は規定の一部ではありません。</em></span></p>
691    
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     <pre class="no-ja-translation" data-ja-hash="45b861d46157f155d38040db723bafd1"><span class=en-original lang=en>&lt;!DOCTYPE HTML&gt;
701     &lt;html&gt;
702     &lt;head&gt;
703     &lt;title&gt;Worker example: One-core computation&lt;/title&gt;
704     &lt;/head&gt;
705     &lt;body&gt;
706     &lt;p&gt;The highest prime number discovered so far is: &lt;output id="result"&gt;&lt;/output&gt;&lt;/p&gt;
707     &lt;script&gt;
708 wakaba 1.29 var worker = new Worker('worker.js');
709     worker.onmessage = function (event) {
710 wakaba 1.42 document.getElementById('result').textContent = event.data;
711 wakaba 1.23 };
712 wakaba 1.53 &lt;/script&gt;
713     &lt;/body&gt;
714     &lt;/html&gt;</span></pre>
715 wakaba 1.23
716 wakaba 1.53 <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 wakaba 1.32
718 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="c2f14df3c3648ecb143c9e271b6721df"><span class=en-original lang=en>// settings
719 wakaba 1.23 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 wakaba 1.29 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 wakaba 1.23 }
731    
732     // handle the results
733     function storeResult(event) {
734 wakaba 1.42 result += 1*event.data;
735 wakaba 1.23 pending_workers -= 1;
736     if (pending_workers &lt;= 0)
737 wakaba 1.29 postMessage(result); // finished!
738 wakaba 1.36 }</span></pre>
739 wakaba 1.23
740 wakaba 1.53 <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 wakaba 1.23
744 wakaba 1.53 <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 wakaba 1.23
746 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="90fc569c1c634a87b725ebbe4cc1e2f4"><span class=en-original lang=en>var start;
747 wakaba 1.23 onmessage = getStart;
748     function getStart(event) {
749 wakaba 1.42 start = 1*event.data;
750 wakaba 1.23 onmessage = getEnd;
751     }
752    
753     var end;
754     function getEnd(event) {
755 wakaba 1.42 end = 1*event.data;
756 wakaba 1.23 onmessage = null;
757 wakaba 1.44 work();
758 wakaba 1.23 }
759    
760 wakaba 1.44 function work() {
761 wakaba 1.23 var result = 0;
762     for (var i = start; i &lt; end; i += 1) {
763     // perform some complex calculation here
764     result += 1;
765     }
766 wakaba 1.29 postMessage(result);
767     close();
768 wakaba 1.36 }</span></pre>
769 wakaba 1.23
770 wakaba 1.53 <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 wakaba 1.23
778 wakaba 1.32
779 wakaba 1.53 <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 wakaba 1.28
781 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="585b83d0801ae75a14554d8d2c737fb2"><span class=en-original lang=en><em>This section is non-normative.</em></span><span class=ja-translation lang=ja><em>この節は規定の一部ではありません。</em></span></p>
782 wakaba 1.32
783 wakaba 1.53 <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 wakaba 1.28
786 wakaba 1.53 <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.28
788 wakaba 1.53 <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 wakaba 1.28
791 wakaba 1.53 <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 wakaba 1.28
793 wakaba 1.53 <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 wakaba 1.28
799 wakaba 1.53 <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 wakaba 1.28
801 wakaba 1.53 <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 wakaba 1.28
807 wakaba 1.53 </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.28
809 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="6c23fb6fef8f715101d908de56f2cb63"><span class=en-original lang=en>function handleMessage(e) {
810 wakaba 1.42 if (e.data == "genkeys")
811 wakaba 1.53 genkeys(e.ports[0]);
812 wakaba 1.42 else if (e.data == "encrypt")
813 wakaba 1.53 encrypt(e.ports[0]);
814 wakaba 1.42 else if (e.data == "decrypt")
815 wakaba 1.53 decrypt(e.ports[0]);
816 wakaba 1.28 }
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 wakaba 1.42 key = e.data;
829 wakaba 1.28 state = 1;
830     } else {
831 wakaba 1.42 p.postMessage(_encrypt(key, e.data));
832 wakaba 1.28 }
833     };
834     }
835    
836     function decrypt(p) {
837     var key, state = 0;
838     p.onmessage = function (e) {
839     if (state == 0) {
840 wakaba 1.42 key = e.data;
841 wakaba 1.28 state = 1;
842     } else {
843 wakaba 1.42 p.postMessage(_decrypt(key, e.data));
844 wakaba 1.28 }
845     };
846     }
847    
848 wakaba 1.29 // support being used as a shared worker as well as a dedicated worker
849     if (this.onmessage) // dedicated worker
850     onmessage = handleMessage;
851     else // shared worker
852     onconnect = function (e) { e.port.onmessage = handleMessage; }
853 wakaba 1.28
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 wakaba 1.36 }</span></pre>
868 wakaba 1.28
869 wakaba 1.53 <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 wakaba 1.28
872 wakaba 1.53 <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 wakaba 1.28
874 wakaba 1.53 <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 wakaba 1.29 var crytoLib = new Worker('libcrypto-v1.js'); // or could use 'libcrypto-v2.js'
880 wakaba 1.28 function getKeys() {
881     var state = 0;
882 wakaba 1.29 cryptoLib.startConversation("genkeys").onmessage = function (e) {
883 wakaba 1.28 if (state == 0)
884 wakaba 1.42 document.getElementById('public').value = e.data;
885 wakaba 1.28 else if (state == 1)
886 wakaba 1.42 document.getElementById('private').value = e.data;
887 wakaba 1.28 state += 1;
888     };
889     }
890     function enc() {
891 wakaba 1.29 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 wakaba 1.42 document.getElementById('input').value = e.data;
896 wakaba 1.29 port.close();
897 wakaba 1.28 };
898     }
899     function dec() {
900 wakaba 1.29 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 wakaba 1.42 document.getElementById('input').value = e.data;
905 wakaba 1.29 port.close();
906 wakaba 1.28 };
907     }
908 wakaba 1.53 &lt;/script&gt;
909     &lt;style&gt;
910 wakaba 1.28 textarea { display: block; }
911 wakaba 1.53 &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 wakaba 1.28
924 wakaba 1.53 <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 wakaba 1.28
927 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="4700bd96e4f3524347953c148b483479"><span class=en-original lang=en>function handleMessage(e) {
928 wakaba 1.42 if (e.data == "genkeys")
929 wakaba 1.53 genkeys(e.ports[0]);
930 wakaba 1.42 else if (e.data == "encrypt")
931 wakaba 1.53 encrypt(e.ports[0]);
932 wakaba 1.42 else if (e.data == "decrypt")
933 wakaba 1.53 decrypt(e.ports[0]);
934 wakaba 1.28 }
935    
936     function genkeys(p) {
937 wakaba 1.29 var generator = new Worker('libcrypto-v2-generator.js');
938 wakaba 1.53 generator.postMessage('', [p]);
939 wakaba 1.28 }
940    
941     function encrypt(p) {
942     p.onmessage = function (e) {
943 wakaba 1.42 var key = e.data;
944 wakaba 1.29 var encryptor = new Worker('libcrypto-v2-encryptor.js');
945 wakaba 1.53 encryptor.postMessage(key, [p]);
946 wakaba 1.28 };
947     }
948    
949     function encrypt(p) {
950     p.onmessage = function (e) {
951 wakaba 1.42 var key = e.data;
952 wakaba 1.29 var decryptor = new Worker('libcrypto-v2-decryptor.js');
953 wakaba 1.53 decryptor.postMessage(key, [p]);
954 wakaba 1.28 };
955     }
956    
957 wakaba 1.29 // support being used as a shared worker as well as a dedicated worker
958     if (this.onmessage) // dedicated worker
959     onmessage = handleMessage;
960     else // shared worker
961 wakaba 1.53 onconnect = function (e) { e.ports[0].onmessage = handleMessage };
962 wakaba 1.36 </span></pre>
963 wakaba 1.28
964 wakaba 1.53 <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 wakaba 1.28
966 wakaba 1.53 <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 wakaba 1.28
968 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="7fcbde64ee437c101414bcc98d9e1ee0"><span class=en-original lang=en>onmessage = function (e) {
969 wakaba 1.29 var k = _generateKeyPair();
970 wakaba 1.53 e.ports[0].postMessage(k[0]);
971     e.ports[0].postMessage(k[1]);
972 wakaba 1.28 close();
973     }
974 wakaba 1.29
975     function _generateKeyPair() {
976     return [Math.random(), Math.random()];
977 wakaba 1.36 }</span></pre>
978 wakaba 1.28
979 wakaba 1.53 <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 wakaba 1.28
981 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="2b1eebc1012c646cca86282c7d07539a"><span class=en-original lang=en>onmessage = function (e) {
982 wakaba 1.42 var key = e.data;
983 wakaba 1.53 e.ports[0].onmessage = function (e) {
984 wakaba 1.42 var s = e.data;
985 wakaba 1.29 postMessage(_encrypt(key, s));
986 wakaba 1.28 }
987 wakaba 1.53 e.ports[0].onclose = function (e) {
988 wakaba 1.28 close();
989     }
990 wakaba 1.29 }
991    
992     function _encrypt(k, s) {
993     return 'encrypted-' + k + ' ' + s;
994 wakaba 1.36 }</span></pre>
995 wakaba 1.28
996 wakaba 1.53 <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>
997 wakaba 1.28
998 wakaba 1.53 <pre class="no-ja-translation" data-ja-hash="0bd5e3330bc5782fe8bcfb158e1367e0"><span class=en-original lang=en>onmessage = function (e) {
999 wakaba 1.42 var key = e.data;
1000 wakaba 1.53 e.ports[0].onmessage = function (e) {
1001 wakaba 1.42 var s = e.data;
1002 wakaba 1.29 postMessage(_decrypt(key, s));
1003 wakaba 1.28 }
1004 wakaba 1.53 e.ports[0].onclose = function (e) {
1005 wakaba 1.28 close();
1006     }
1007 wakaba 1.29 }
1008    
1009     function _decrypt(k, s) {
1010     return s.substr(s.indexOf(' ')+1);
1011 wakaba 1.36 }</span></pre>
1012 wakaba 1.28
1013 wakaba 1.53 <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
1014     is happening &mdash; the API hasn't changed; the library can
1015     delegate to subworkers without changing its API, even though it is
1016     accepting data using message channels.</span></p>
1017    
1018     <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>
1019 wakaba 1.28
1020 wakaba 1.32
1021 wakaba 1.53
1022    
1023     <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>
1024 wakaba 1.1
1025 wakaba 1.36 <p class="has-ja-translation" data-ja-hash="8b0f72fe04577949924ab1e2997e0d8b"><span class=en-original lang=en>All diagrams, examples, and notes in this specification are
1026 wakaba 1.53 non-normative, as are all sections explicitly marked non-normative.
1027     Everything else in this specification is normative.</span><span class=ja-translation lang=ja>この仕様書のすべての図、例示、注意書き、ならびに規定の一部ではないと明記したすべての節は、
1028 wakaba 1.1 規定の一部ではありません。
1029 wakaba 1.53 この仕様書のそれ以外の部分はすべて規定の一部です。</span></p>
1030 wakaba 1.32
1031 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="8adc9958d29b879426b71b5b9eae46db"><span class=en-original lang=en>The key words "MUST", "MUST NOT", "REQUIRED", <!--"SHALL", "SHALL
1032     NOT",--> "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
1033     "OPTIONAL" in the normative parts of this document are to be
1034     interpreted as described in RFC2119. For readability, these words do
1035     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>」、
1036     「<em class=rfc2119 title="MUST NOT">してはなりません</em>」、
1037     「<em class=rfc2119 title="REQUIRED">必須です</em>」、<!--"SHALL", "SHALL
1038     NOT",-->「<em class=rfc2119 title="SHOULD">するべきです</em>」、
1039     「<em class=rfc2119 title="SHOULD NOT">するべきではありません</em>」、
1040     「<em class=rfc2119 title="RECOMMENDED">推奨します</em>」、「<em class=rfc2119 title="MAY">して構いません</em>」、
1041     「<em class=rfc2119 title="OPTIONAL">任意です</em>」は、 RFC 2119 で説明されているように解釈します。
1042     この仕様書<ins class=ja-note>の原文</ins>では、
1043     可読性の観点から、
1044     これらの語<ins class=ja-note>の原語</ins>のすべて大文字による表記は行っていません。
1045     <a href=#refsRFC2119>[RFC2119]</a></span></p>
1046    
1047     <p class="has-ja-translation" data-ja-hash="63dc4357c416e0e0f292a5f662ca71ab"><span class=en-original lang=en>Requirements phrased in the imperative as part of algorithms
1048     (such as "strip any leading space characters" or "return false and
1049     abort these steps") are to be interpreted with the meaning of the
1050     key word ("must", "should", "may", etc) used in introducing the
1051     algorithm.</span><span class=ja-translation lang=ja>算法の一部として<ins class=ja-note>動作の指示の形で (原文では</ins>命令形で<ins class=ja-note>) </ins>記述された要件
1052 wakaba 1.1 (例えば「先頭の間隔文字をすべて除去します」や「偽を返し、これらの段階を停止します」)
1053 wakaba 1.24 は、算法を紹介するに当たって使われたキーワード (<em class=rfc2119 title="MUST">しなければなりません</em>、
1054 wakaba 1.53 <em class=rfc2119 title="SHOULD">するべきです</em>、<em class=rfc2119 title="MAY">して構いません</em>など) の意味により解釈します。</span></p>
1055 wakaba 1.32
1056 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="a5a0db584980ce3f2448983d6188b2d1"><span class=en-original lang=en>Some conformance requirements are phrased as requirements on
1057     attributes, methods or objects. Such requirements are to be
1058     interpreted as requirements on user agents.</span><span class=ja-translation lang=ja>いくつかの適合性要件は属性やメソッドやオブジェクトの要件として説明されています。
1059     そのような要件は、利用者エージェントに関する要件として解釈します。</span></p>
1060    
1061     <p class="has-ja-translation" data-ja-hash="27386c326b98d878b3c408c60b6095b0"><span class=en-original lang=en>Conformance requirements phrased as algorithms or specific steps
1062     may be implemented in any manner, so long as the end result is
1063     equivalent. (In particular, the algorithms defined in this
1064     specification are intended to be easy to follow, and not intended to
1065     be performant.)</span><span class=ja-translation lang=ja>算法や特定の段階として説明されている適合性要件は、
1066 wakaba 1.1 最終的な結果が等価である限り、任意の方法で実装して<em class=rfc2119 title="MAY">構いません</em>。
1067     (特に、この仕様書で定義されている算法は追うのを簡単にしており、
1068 wakaba 1.53 高性能であることを目指してはいません。)</span></p>
1069 wakaba 1.32
1070 wakaba 1.53 <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
1071     agents.</span><span class=ja-translation lang=ja>この仕様書で定義する唯一の適合性の級は利用者エージェントです。</span></p>
1072 wakaba 1.32
1073 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="57959e6c42e8d5141b11e501bf60cc2f"><span class=en-original lang=en>User agents may impose implementation-specific limits on
1074     otherwise unconstrained inputs, e.g. to prevent denial of service
1075     attacks, to guard against running out of memory, or to work around
1076     platform-specific limitations.</span><span class=ja-translation lang=ja>利用者エージェントは、サービス拒否攻撃を防ぐため、
1077 wakaba 1.1 記憶容量を使い尽くすことを防ぐため、
1078     あるいは環境特有の制限に対応するためなどの目的で、
1079 wakaba 1.53 別段の制約のない入力に対して実装特有の制限を設けて<em class=rfc2119 title="MAY">構いません</em>。</span></p>
1080    
1081 wakaba 1.1
1082 wakaba 1.53 <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>
1083 wakaba 1.32
1084 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="8dc27a34324d9e41d25c6bbbc2d2551c"><span class=en-original lang=en>This specification relies on several other underlying
1085     specifications.</span><span class=ja-translation lang=ja>この仕様書は、他のいくつかの下位の仕様書に依存しています。</span></p>
1086 wakaba 1.1
1087 wakaba 1.53 <dl><dt class="no-ja-translation" data-ja-hash="6bff62b10d884fb77428cfe168cd783d"><span class=en-original lang=en>HTML5</span></dt>
1088 wakaba 1.1
1089 wakaba 1.53 <dd>
1090 wakaba 1.1
1091 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="99d7a97f59faf316f6125ad288390f21"><span class=en-original lang=en>Many fundamental concepts from HTML5 are used by this
1092     specification. <a href=#refsHTML5>[HTML5]</a></span><span class=ja-translation lang=ja>この仕様書では、 HTML5 の多くの基礎的な概念を使用します。
1093     <a href=#refsHTML5>[HTML5]</a></span></p>
1094 wakaba 1.1
1095 wakaba 1.53 </dd>
1096 wakaba 1.1
1097 wakaba 1.53 <dt class="no-ja-translation" data-ja-hash="21838f6e93b1a2157b16dcb6281ff225"><span class=en-original lang=en>WebIDL</span></dt>
1098 wakaba 1.1
1099 wakaba 1.53 <dd>
1100 wakaba 1.32
1101 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="a9c4aac7340973a8cba95e916539c5d9"><span class=en-original lang=en>The IDL blocks in this specification use the semantics of the
1102     WebIDL specification. <a href=#refsWebIDL>[WebIDL]</a></span><span class=ja-translation lang=ja>この仕様書の IDL ブロックは、WebIDL 仕様書における意味を用います。 <a href=#refsWebIDL>[WebIDL]</a></span></p>
1103 wakaba 1.32
1104 wakaba 1.53 </dd>
1105    
1106     </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>
1107    
1108     <p class="has-ja-translation" data-ja-hash="f99630e4a7f12f2c4ecb88e02bf4a644"><span class=en-original lang=en>The construction "a <code title="">Foo</code> object", where
1109     <code title="">Foo</code> is actually an interface, is sometimes
1110     used instead of the more accurate "an object implementing the
1111     interface <code title="">Foo</code>".</span><span class=ja-translation lang=ja>「<code title="">Foo</code> オブジェクト」という構文 (<code title="">Foo</code>
1112 wakaba 1.10 は実際には界面) を時々使いますが、より正確な「界面 <code title="">Foo</code>
1113 wakaba 1.53 を実装しているオブジェクト」の代わりに用いています。</span></p>
1114    
1115     <p class="has-ja-translation" data-ja-hash="12e69607f07368ff572adb4dffcc8535"><span class=en-original lang=en>The term DOM is used to refer to the API set made available to
1116     scripts in Web applications, and does not necessarily imply the
1117     existence of an actual <code>Document</code> object or of any other
1118     <code>Node</code> objects as defined in the DOM Core
1119     specifications. <a href=#refsDOM3CORE>[DOM3CORE]</a></span><span class=ja-translation lang=ja>DOM という語は、 Web アプリケーションでスクリプトに利用可能とされている API
1120     の集合を指して用い、必ずしも DOM 中核仕様書で定義されている実際の
1121     <code>Document</code> オブジェクトその他の <code>Node</code>
1122     オブジェクトの存在を暗示してはいません。<a
1123     href=#refsDOM3CORE>[DOM3CORE]</a></span></p>
1124    
1125     <p class="has-ja-translation" data-ja-hash="5b9242da79aeab74bccc57781ac3103e"><span class=en-original lang=en>A DOM attribute is said to be <em>getting</em> when its value is
1126     being retrieved (e.g. by author script), and is said to be
1127     <em>setting</em> when a new value is assigned to it.</span><span class=ja-translation lang=ja>DOM 属性は、その値が (例えば著者のスクリプトにより) 取り出される時<em>取得される</em>といい、
1128     新しい値がその属性に割り当てられる時<em>設定される</em>といいます。</span></p>
1129    
1130    
1131    
1132     <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>
1133    
1134     <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
1135     workers. Dedicated workers, once created, and are linked to their
1136     creator; but message ports can be used to communicate from a
1137     dedicated worker to multiple other browsing contexts or
1138     workers. Shared workers, on the other hand, are named, and once
1139     created any script running in the same <span>origin</span> can
1140     obtain a reference to that worker and communicate with it.</span></p>
1141    
1142    
1143     <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>
1144    
1145     <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>
1146    
1147     <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>
1148    
1149     <pre class="idl no-ja-translation" data-ja-hash="178d3cd44219dfb44aaed9b80a647a18"><span class=en-original lang=en>interface <dfn id=workerglobalscope>WorkerGlobalScope</dfn> {
1150     readonly attribute <a href=#workerglobalscope>WorkerGlobalScope</a> <a href=#dom-workerglobalscope-self title=dom-WorkerGlobalScope-self>self</a>;
1151     readonly attribute <a href=#workerlocation>WorkerLocation</a> <a href=#dom-workerglobalscope-location title=dom-WorkerGlobalScope-location>location</a>;
1152     // also implements everything on <a href=#workerutils>WorkerUtils</a>
1153    
1154     void <a href=#dom-workerglobalscope-close title=dom-WorkerGlobalScope-close>close</a>();
1155     attribute <span>EventListener</span> <a href=#handler-workerglobalscope-onclose title=handler-WorkerGlobalScope-onclose>onclose</a>;
1156     attribute <span>EventListener</span> <a href=#handler-workerglobalscope-onerror title=handler-WorkerGlobalScope-onerror>onerror</a>;
1157 wakaba 1.36 };</span></pre>
1158 wakaba 1.9
1159 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="d82fd6989aa746efef0cf182479d5e41"><span class=en-original lang=en>Objects implementing the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> interface
1160     must also implement the <code>EventTarget</code> interface.</span></p>
1161    
1162     <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
1163     must return the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object itself.</span></p>
1164    
1165     <p class="no-ja-translation" data-ja-hash="2677567494ab960fc149d278230da864"><span class=en-original lang=en>The <dfn id=dom-workerglobalscope-location title=dom-WorkerGlobalScope-location><code>location</code></dfn>
1166     attribute must return the <code><a href=#workerlocation>WorkerLocation</a></code> object created
1167     for the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object when the worker was
1168     created. It represents the <span>absolute URL</span> of the script
1169     that was used to initialize the worker.</span></p>
1170    
1171     <hr><p class="no-ja-translation" data-ja-hash="256408f3cef4a40ad7a9b41f965bb34a"><span class=en-original lang=en>When a script invokes the <dfn id=dom-workerglobalscope-close title=dom-WorkerGlobalScope-close><code>close()</code></dfn> method on
1172     a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, the user agent must run the
1173     following steps:</span></p>
1174    
1175     <ol><li><p class="no-ja-translation" data-ja-hash="a77e594b19dfdcd55ab966b2d88dacb0"><span class=en-original lang=en><span>Queue a task</span> to <span>fire a simple
1176     event</span> called <code title=event-close>close</code> at the
1177     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object.</span></li>
1178    
1179     <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
1180     <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to
1181     true.</span></li>
1182    
1183     <li><p class="no-ja-translation" data-ja-hash="293ce4f596768704154578dfeb071f8b"><span class=en-original lang=en>For each <code>MessagePort</code> object that is entangled
1184     with another port and that has one (but only one) port whose owner
1185     is the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object on which the method
1186     was invoked (this would include, for instance, the implicit port in
1187     used for dedicated workers), unentangle the two ports.</span></li>
1188    
1189     </ol><p class="no-ja-translation" data-ja-hash="1819533614f082b59ffd28b1f1efb71c"><span class=en-original lang=en>The following are the <span>event handler DOM attributes</span>
1190     that must be supported by objects implementing the
1191     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> interface:</span></p>
1192    
1193     <dl><dt class="no-ja-translation" data-ja-hash="42451488f9c7abab10e0c13b15f2635c"><span class=en-original lang=en><dfn id=handler-workerglobalscope-onclose title=handler-WorkerGlobalScope-onclose><code>onclose</code></dfn></span></dt>
1194    
1195     <dd><p class="has-ja-translation" data-ja-hash="91a2ce3a21f7ed687afe756baa5387d8" data-ja-real-hash="0e6ce4e8e4e4e5dea3e792498052afda"><span class=en-original lang=en>Must be invoked whenever a <code title=event-close>close</code> event is targeted at or bubbles
1196     through the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object.</span><span class=ja-translation lang=ja><code title=event-close>close</code> 事象が当該 <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> オブジェクトを対象としているか、泡立って当該オブジェクトを通過する時に、
1197     呼び出されなければなりません。</span></dd>
1198    
1199    
1200     <dt 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></dt>
1201    
1202     <dd><p class="no-ja-translation" data-ja-hash="1c4a5f9bcba2371995a35bd92d7ebda1"><span class=en-original lang=en>Must be invoked whenever an <code title=event-error>error</code> event is targeted at or bubbles
1203     through the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object.</span></dd>
1204    
1205     </dl><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>
1206 wakaba 1.29
1207 wakaba 1.50 <!-- the XXX below is for collapsing this interface onto WorkerGlobalScope so it looks like just one interface - the inheritance is a spec fiction only -->
1208 wakaba 1.53 <pre class="idl no-ja-translation" data-ja-hash="fb7d913a0187191f4f03e4de69d52767"><span class=en-original lang=en>[NoInterfaceObject, XXX] interface <dfn id=dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
1209     void <a href=#dom-dedicatedworkerglobalscope-postmessage title=dom-DedicatedWorkerGlobalScope-postMessage>postMessage</a>(in any message, [Optional] in <span>MessagePortArray</span> ports);<!--
1210 wakaba 1.50 <span>MessagePort</span> <span title="dom-DedicatedWorkerGlobalScope-startConversation">startConversation</span>(in any message);-->
1211 wakaba 1.53 attribute <span>EventListener</span> <a href=#handler-dedicatedworkerglobalscope-onmessage title=handler-DedicatedWorkerGlobalScope-onmessage>onmessage</a>;
1212 wakaba 1.36 };</span></pre>
1213 wakaba 1.29
1214 wakaba 1.53 <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
1215     had an implicit <code>MessagePort</code> associated with them. This
1216     port is part of a channel that is set up when the worker is created,
1217     but it is not exposed. This object must never be garbage collected
1218     before the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span></p>
1219    
1220     <p class="no-ja-translation" data-ja-hash="691b70baf05b8a99195a6211945547b7"><span class=en-original lang=en>All messages received by that port must immediately be
1221     retargetted at the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code>
1222     object.</span></p>
1223 wakaba 1.29
1224 wakaba 1.53 <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><!--
1225 wakaba 1.42 and <dfn
1226     title="dom-DedicatedWorkerGlobalScope-startConversation"><code>startConversation()</code></dfn>-->
1227 wakaba 1.53 method<!--s (startConversation)--> on
1228     <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> objects must act as if, when
1229     invoked, it<!--/they (startConversation)--> immediately invoked the
1230     method of the same name on the port, with the same arguments, and
1231     returned the same return value.</span></p>
1232    
1233     <p class="no-ja-translation" data-ja-hash="76c31cd4379c78a0b601d274a0eed2da"><span class=en-original lang=en>The following are the <span>event handler DOM attributes</span>
1234     that must be supported by objects implementing the
1235     <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> interface:</span></p>
1236    
1237     <dl><dt 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></dt>
1238    
1239     <dd><p class="has-ja-translation" data-ja-hash="91a2ce3a21f7ed687afe756baa5387d8" data-ja-real-hash="77a33d3c00b560f7b61944c0809c82a6"><span class=en-original lang=en>Must be invoked whenever a <code title=event-DedicatedWorkerGlobalScope-message>message</code> event is targeted
1240     at or bubbles through the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span><span class=ja-translation lang=ja><code title=event-DedicatedWorkerGlobalScope-message>message</code> 事象が当該 <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> オブジェクトを対象としているか、泡立って当該オブジェクトを通過する時に、
1241     呼び出されなければなりません。</span></dd>
1242    
1243 wakaba 1.59 </dl><p class="no-ja-translation" data-ja-hash="0c348925ec14031682913edd79ceb3d3"><span class=en-original lang=en>For the purposes of the <span>offline application cache</span>
1244     networking model, a dedicated worker is an extension of the
1245     <span>cache host</span> from which it was created.</span></p>
1246    
1247    
1248    
1249     <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>
1250 wakaba 1.53
1251 wakaba 1.50 <!-- the XXX below is for collapsing this interface onto WorkerGlobalScope so it looks like just one interface - the inheritance is a spec fiction only -->
1252 wakaba 1.59 <pre class="idl no-ja-translation" data-ja-hash="7659fbce684710b1e885dbe032d0e3e8"><span class=en-original lang=en>[NoInterfaceObject, XXX] interface <dfn id=sharedworkerglobalscope>SharedWorkerGlobalScope</dfn> : <a href=#workerglobalscope>WorkerGlobalScope</a> {
1253 wakaba 1.53 readonly attribute DOMString <a href=#dom-sharedworkerglobalscope-name title=dom-SharedWorkerGlobalScope-name>name</a>;
1254 wakaba 1.59 readonly attribute <span>ApplicationCache</span> <a href=#dom-sharedworkerglobalscope-applicationcache title=dom-SharedWorkerGlobalScope-applicationCache>applicationCache</a>;
1255 wakaba 1.53 attribute <span>EventListener</span> <a href=#handler-sharedworkerglobalscope-onconnect title=handler-SharedWorkerGlobalScope-onconnect>onconnect</a>;
1256     };</span></pre>
1257    
1258     <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
1259     their global object for each connection.</span><span class=ja-translation lang=ja>共有労働者は、各接続について大域オブジェクトの <code
1260     title=event-WorkerGlobalScope-connect>connect</code> 事象を通じてメッセージ・ポートを受信します。</span></p>
1261    
1262     <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>
1263     attribute must return the value it was assigned when the
1264     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object was created by the
1265     "<a href=#run-a-worker>run a worker</a>" algorithm. Its value represents the name
1266     that can be used to obtain a reference to the worker using the
1267     <code><a href=#sharedworker>SharedWorker</a></code> constructor.</span></p>
1268    
1269     <p class="no-ja-translation" data-ja-hash="05d7dec0a38e44dd0191400aab152cd4"><span class=en-original lang=en>The following are the <span>event handler DOM attributes</span>
1270     that must be supported by objects implementing the
1271     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> interface:</span></p>
1272    
1273     <dl><dt 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></dt>
1274    
1275     <dd><p class="has-ja-translation" data-ja-hash="91a2ce3a21f7ed687afe756baa5387d8" data-ja-real-hash="3161334d86a623c2425c7efcc62cc618"><span class=en-original lang=en>Must be invoked whenever a <code title=event-SharedWorkerGlobalScope-connect>connect</code> event is targeted
1276     at or bubbles through the <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object.</span><span class=ja-translation lang=ja><code title=event-SharedWorkerGlobalScope-connect>connect</code> 事象が当該 <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> オブジェクトを対象としているか、泡立って当該オブジェクトを通過する時に、
1277     呼び出されなければなりません。</span></dd>
1278    
1279 wakaba 1.59 </dl><p class="no-ja-translation" data-ja-hash="ac81324d4bd9e8a1090d3db7e2e34ca9"><span class=en-original lang=en>For the purposes of the <span>offline application cache</span>
1280     networking model, a shared worker is its own <span>cache
1281     host</span>. The <a href=#run-a-worker>run a worker</a> algorithm takes care of
1282     associating the worker with an <span>application cache</span>.</span></p>
1283    
1284     <p class="note no-ja-translation" data-ja-hash="86e84faac86e71fd6afa7e757b783e39"><span class=en-original lang=en>The <dfn id=dom-sharedworkerglobalscope-applicationcache title=dom-SharedWorkerGlobalScope-applicationCache><code>applicationCache</code></dfn>
1285     returns the <code>ApplicationCache</code> object for the
1286     worker.</span></p><!-- normative conf criteria is in the appcache section
1287     -->
1288    
1289    
1290     <h3 id=base-urls-and-origins-of-workers class="has-ja-translation" data-ja-hash="87cf5066db3fe786def6b713cf422c90"><span class=en-original lang=en><span class=secno>4.2 </span>Base URLs and origins of workers</span><span class=ja-translation lang=ja><span class=secno>4.2 </span>労働者の基底 URL と起源</span></h3>
1291 wakaba 1.53
1292     <p class="no-ja-translation" data-ja-hash="5d71247ae9c7e88e4244d78062ed4760"><span class=en-original lang=en>Both the <span>origin</span> and <span>effective script
1293     origin</span> of scripts running in workers are the
1294     <span>origin</span> of the <span>absolute URL</span> given in that
1295     the worker's <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
1296     represents.</span></p>
1297    
1298    
1299     <h3 id=decoding-scripts class="no-ja-translation" data-ja-hash="857fdf8086147b470ea754e3a4f6c667"><span class=en-original lang=en><span class=secno>4.3 </span>Decoding scripts</span></h3>
1300    
1301     <p class="no-ja-translation" data-ja-hash="4356cf7102f2b838e2b8201769e8d8ed"><span class=en-original lang=en>When a user agent is to <dfn id=decode-a-script-resource>decode a script resource</dfn> to
1302     obtain its source in Unicode, it must run the following steps:</span></p>
1303    
1304     <ol><li>
1305    
1306     <p class="no-ja-translation" data-ja-hash="6571036d6f54aff003088a24c671dfc7"><span class=en-original lang=en>Let <var title="">character encoding</var> be <i title="">unknown</i>.</span></p>
1307    
1308     </li>
1309    
1310     <li>
1311    
1312     <p class="no-ja-translation" data-ja-hash="26531f4017a22df14ccb6d1eee6264e7"><span class=en-original lang=en>For each of the rows in the following table, starting with the
1313     first one and going down, if the resource has as many or more
1314     bytes available than the number of bytes in the first column, and
1315     the first bytes of the resource match the bytes given in the first
1316     column, then let <var title="">character encoding</var> be the
1317     encoding given in the cell in the second column of that row:</span></p>
1318    
1319     <!-- this table is present in several forms in this file; keep them in sync -->
1320     <table><thead><tr><th class="has-ja-translation" data-ja-hash="cedd90a7eefcd8a4c28ead96824a8c5a"><span class=en-original lang=en>Bytes in Hexadecimal
1321     </span><span class=ja-translation lang=ja>バイトの十六進数表現</span><th class="has-ja-translation" data-ja-hash="169a6f6b44766410bffebf76ff3dcf17"><span class=en-original lang=en>Encoding
1322     </span><span class=ja-translation lang=ja>符号化</span><tbody><!-- nobody uses this
1323     <tr>
1324     <td class="no-ja-translation" data-ja-hash="3b523bf4f5c7a5f0ff3963fdad8049a9"><span class=en-original lang=en>00 00 FE FF
1325     </span><td class="no-ja-translation" data-ja-hash="59e7c7bf45f69d917450ae560a578a4f"><span class=en-original lang=en>UTF-32BE
1326     </span><tr>
1327     <td class="no-ja-translation" data-ja-hash="e25d985f134390f54047573f4a1eca7e"><span class=en-original lang=en>FF FE 00 00
1328     </span><td class="no-ja-translation" data-ja-hash="83039ece36f32fba267280c8de26edf5"><span class=en-original lang=en>UTF-32LE
1329     --></span><tr><td class="no-ja-translation" data-ja-hash="d9594f5bb7f7387cd1c6d8cb69fb5774"><span class=en-original lang=en>FE FF
1330     </span><td class="no-ja-translation" data-ja-hash="58ee3e3038c435c19dfa106ac8b67d73"><span class=en-original lang=en>UTF-16BE
1331     </span><tr><td class="no-ja-translation" data-ja-hash="3d748bc0fd7caa28cb9bd697c840f46f"><span class=en-original lang=en>FF FE
1332     </span><td class="no-ja-translation" data-ja-hash="600ebb464ff7e548ff5a09c2c12f551b"><span class=en-original lang=en>UTF-16LE
1333     </span><tr><td class="no-ja-translation" data-ja-hash="5d1b4e645efa35016b709ffbd308e29d"><span class=en-original lang=en>EF BB BF
1334     </span><td class="no-ja-translation" data-ja-hash="ae3b3df9970b49b6523e608759bc957d"><span class=en-original lang=en>UTF-8
1335     <!-- nobody uses this
1336     --></span><!--<tr>
1337     <td class="no-ja-translation" data-ja-hash="7d1cd1d79b5ca7151c2153c016bc5c49"><span class=en-original lang=en>DD 73 66 73
1338     </span><td class="no-ja-translation" data-ja-hash="48ad579645de9a10a9a6f78fab81fb65"><span class=en-original lang=en>UTF-EBCDIC
1339     -->
1340     </span></table><p class="note no-ja-translation" data-ja-hash="9a59482dc82872c443907eeed8818b89"><span class=en-original lang=en>This step looks for Unicode Byte Order Marks
1341     (BOMs).</span></p>
1342    
1343     </li>
1344 wakaba 1.29
1345 wakaba 1.53 <li>
1346    
1347     <p class="no-ja-translation" data-ja-hash="1bdaa4e7198023dcf4f7984a4898619a"><span class=en-original lang=en>If <var title="">character encoding</var> is still <i title="">unknown</i>, apply the <span>algorithm for extracting an
1348     encoding from a Content-Type</span> to the resource's <span title=Content-Type>Content Type metadata</span>; if this returns
1349     an encoding, and the user agent supports that encoding, then let
1350     <var title="">character encoding</var> be that encoding.</span></p>
1351    
1352     </li>
1353    
1354     <li>
1355    
1356     <p class="no-ja-translation" data-ja-hash="6bbc467e6929571d61a6b95004cf9974"><span class=en-original lang=en>If <var title="">character encoding</var> is still <i title="">unknown</i>, then let <var title="">character
1357     encoding</var> be UTF-8.</span></p>
1358    
1359     </li>
1360    
1361     <li>
1362    
1363     <p class="no-ja-translation" data-ja-hash="178b2c0b2c79b7e38b80e13f0fac6983"><span class=en-original lang=en>Convert the resource to Unicode using the character encoding
1364     given by <var title="">character encoding</var>.</span></p>
1365    
1366     <p class="no-ja-translation" data-ja-hash="ee427dae6dec0a6bf731b3069f9a4abd"><span class=en-original lang=en>Return the text that is so obtained.</span></p>
1367    
1368     </li>
1369    
1370     </ol><h3 id=the-event-loop class="no-ja-translation" data-ja-hash="96715962ce61ea28085d7e170ec30e73"><span class=en-original lang=en><span class=secno>4.4 </span>The event loop</span></h3>
1371    
1372     <p class="no-ja-translation" data-ja-hash="0aedaf87c35cd8df1f4cfca58a08c821"><span class=en-original lang=en>Each <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object is asssociated with a
1373     <span>event loop</span>. This <span>event loop</span> has no
1374     associated <span>browsing context</span>, and its <span title="task
1375     queue">task queues</span> only have events, callbacks, and
1376     networking activity as <span title=concept-task>tasks</span>. The
1377     processing model of these <span title="event loop">event
1378     loops</span> is defined below in the <a href=#run-a-worker>run a worker</a>
1379     algorithm.</span></p>
1380    
1381     <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
1382     initially be false, but which can get set to true by the algorithms
1383     in the processing model section below.</span></p>
1384    
1385     <p class="no-ja-translation" data-ja-hash="35f0c99f177dce8acd9669a371da6ba3"><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
1386     true, the <span>event loop</span>'s <span title="task queue">task
1387     queues</span> must discard any further <span title=concept-task>tasks</span> that would be added to them (tasks
1388     already on the queue are unaffected unless otherwise
1389     specified). Effectively, once the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is true,
1390     timers stop firing, notifications for all pending asynchronous
1391     operations are dropped, etc.</span></p>
1392    
1393    
1394     <h3 id="the-worker's-ports" class="has-ja-translation" data-ja-hash="b0a758845322b24463d7ebe35160f526"><span class=en-original lang=en><span class=secno>4.5 </span>The worker's ports</span><span class=ja-translation lang=ja><span class=secno>4.5 </span>労働者のポート</span></h3>
1395    
1396     <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
1397     <code>MessagePort</code> objects.</span><span class=ja-translation lang=ja>労働者は、メッセージ通信路とその <code>MessagePort</code>
1398     オブジェクトを通じて、他の労働者や閲覧文脈と通信します。</span></p>
1399 wakaba 1.29
1400 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="d4338ae250ed306d56d6aa9b5c9dc0dd"><span class=en-original lang=en>Each <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> <var title="">worker global
1401     scope</var> has a list of <dfn id="the-worker's-ports-0">the worker's ports</dfn>, which
1402     consists of all the <code>MessagePort</code> objects that are
1403     entangled with another port and that have one (but only one) port
1404     owned by <var title="">worker global scope</var>. This list includes
1405     <!--all the <code>MessagePort</code> objects that are in events
1406 wakaba 1.46 pending in the <span>event loop</span>, as well as (commented out
1407     because in practice it makes no difference either way as far as I
1408     can tell, and it would be hard to strictly implement since these
1409 wakaba 1.53 ports might not yet be across the thread boundary)--> the implicit
1410     <code>MessagePort</code> in the case of <a href=#dedicatedworkerglobalscope title=DedicatedWorkerGlobalScope>dedicated workers</a>.</span></p>
1411 wakaba 1.46
1412 wakaba 1.53 <hr><p class="no-ja-translation" data-ja-hash="d179c3a965c7114b941eb9f6055e4539"><span class=en-original lang=en>A worker is said to be a <dfn id=permissible-worker>permissible worker</dfn> if
1413     either:</span></p>
1414    
1415     <ul><li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="1408e830059dcfb69df672a38b4b1286"><span class=en-original lang=en>at some point past or present a <code>MessagePort</code> owned
1416     by the worker was entangled with a <code>MessagePort</code> <var title="">p</var> whose owner is a <code>Window</code> object whose
1417     <span>active document</span> is the <code>Document</code> that was
1418     that <span>browsing context</span>'s <span>active document</span>
1419     when <var title="">p</var> was created, and that
1420     <code>Document</code> is <span>fully active</span>, or</span></li>
1421    
1422     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="7d73ff962a45da380d22078e36643f8e"><span class=en-original lang=en>at some point past or present a <code>MessagePort</code> owned
1423     by the worker was entangled with a <code>MessagePort</code> owned
1424     by another worker that is currently a <a href=#permissible-worker>permissible
1425     worker</a>.</span></li>
1426    
1427     </ul><hr><p class="no-ja-translation" data-ja-hash="e28a47461e2800f81adbe89d9ba7ddc0"><span class=en-original lang=en>A worker is said to be a <dfn id=protected-worker>protected worker</dfn> if
1428     either:</span></p>
1429    
1430     <ul><li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="bdb99a07f0bdd466be53f448c426a8c1"><span class=en-original lang=en>it has outstanding timers, database transactions, or network
1431     connections, and is a <a href=#permissible-worker>permissible worker</a>, or</span></li>
1432    
1433     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="c632191e8e249020d20f32f22688eedd"><span class=en-original lang=en>there is a <a href=#protected-worker>protected worker</a> that at some point
1434     past or present owned a <code>MessagePort</code> that was entangled
1435     with a <code>MessagePort</code> owned by this worker.</span></li>
1436    
1437     </ul><hr><p class="no-ja-translation" data-ja-hash="0f35ba0a68fecabc0a9dc78ba90d72b6"><span class=en-original lang=en>A worker is said to be an <dfn id=active-needed-worker>active needed worker</dfn> if either:
1438    
1439     </span><ul><li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="37f77e49e3f2875101f5d15b70f2bbf6"><span class=en-original lang=en>the worker is a <a href=#protected-worker>protected worker</a>, or</span></li>
1440    
1441     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="08a6bd68cf42ee62f3b780070e5861fe"><span class=en-original lang=en>at least one of the <a href="#the-worker's-ports-0">the worker's ports</a> is
1442     entangled with a <code>MessagePort</code> <var title="">p</var>
1443     whose owner is a <code>Window</code> object whose <span>active
1444     document</span> is the <code>Document</code> that was that
1445     <span>browsing context</span>'s <span>active document</span> when
1446     that <code>MessagePort</code> <var title="">p</var> was created,
1447     and that <code>Document</code> is <span>fully active</span>,
1448     or</span></li>
1449    
1450     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="8b569ff4c481dcbbd5856cb80f2a36ba"><span class=en-original lang=en>at least one of the <a href="#the-worker's-ports-0">the worker's ports</a> has an
1451     entangled <code>MessagePort</code> owned by a
1452     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object that is itself an
1453     <a href=#active-needed-worker>active needed worker</a>.</span></li>
1454    
1455     </ul><hr><p class="no-ja-translation" data-ja-hash="83f9f90c7ac0e4a375bf8f81a6f33b78"><span class=en-original lang=en>A worker is said to be a <dfn id=suspendable-worker>suspendable worker</dfn> if it is
1456     not an <a href=#active-needed-worker>active needed worker</a> but either:</span></p>
1457    
1458     <ul><li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="c0bd1de876a2c02a35ea1cf75a62cdda"><span class=en-original lang=en>at least one of the <a href="#the-worker's-ports-0">the worker's ports</a> has an
1459     entangled <code>MessagePort</code> owned by a <code>Window</code>
1460     object, or</span></li>
1461    
1462     <li><p class="no-ja-translation ja-translation-inserted" data-ja-hash="cdfdec6559ddbb9f3591d57651259483"><span class=en-original lang=en>at least one of the <a href="#the-worker's-ports-0">the worker's ports</a> has an
1463     entangled <code>MessagePort</code> owned by a
1464     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object that is itself a <span>needed
1465     worker</span>.</span></li>
1466    
1467     </ul><h3 id=processing-model class="has-ja-translation" data-ja-hash="4eeffb677544f6c8799408c6b9021b4c"><span class=en-original lang=en><span class=secno>4.6 </span>Processing model</span><span class=ja-translation lang=ja><span class=secno>4.6 </span>処理モデル</span></h3>
1468    
1469     <p class="no-ja-translation" data-ja-hash="c45c1611a5572d560022f94383f4daf7"><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
1470     <span>URL</span> <var title="">url</var>, a browsing context <var title="">owner browsing context</var>, and with global scope <var title="">worker global scope</var>, it must run the following
1471     steps:</span></p>
1472    
1473     <ol><li>
1474    
1475     <p class="has-ja-translation" data-ja-hash="6fdced8613c508a9db62b2a4bec3fba3"><span class=en-original lang=en>Create a completely separate and parallel execution environment
1476     (i.e. a separate thread or process or equivalent construct), and
1477     run the rest of these steps asychronously in that context.</span><span class=ja-translation lang=ja>完全に分離された並列の実行環境 (すなわち、別のスレッドやプロセスや等価な構造体) を作り、
1478 wakaba 1.36 その文脈で非同期にこれらの段階の残りを走らせます。</span></p>
1479 wakaba 1.30
1480 wakaba 1.53 </li>
1481 wakaba 1.59
1482     <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
1483     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object (i.e. the worker is a
1484     shared worker), and there are any <span title="relevant application
1485     cache">relevant application caches</span> that are identified by a
1486     manifest URL with the <span>same origin</span> as <var title="">url</var> and that have <var title="">url</var> as one of
1487     their entries, <em>not</em> excluding entries marked as <span title=concept-appcache-foreign>foreign</span>, then associate the
1488     <var title="">worker global scope</var> with the <span title=concept-appcache-selection>most appropriate application
1489     cache</span> of those that match.</span></li>
1490 wakaba 1.53
1491 wakaba 1.30 <li>
1492 wakaba 1.12
1493 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="83920af54821d7c307267e9565d86ea3"><span class=en-original lang=en>Attempt to <span>fetch</span> the resource identified by <var title="">url</var>.</span></p>
1494    
1495     <p class="no-ja-translation" data-ja-hash="b6caf01ca8d3fb4324a94353ae55f748"><span class=en-original lang=en>If the attempt fails, then for each <code><a href=#worker>Worker</a></code> or
1496     <code><a href=#sharedworker>SharedWorker</a></code> object associated with <var title="">worker global scope</var>, <span>queue a task</span> to
1497     <span>fire a simple event</span> called <code title=event-error>error</code> at that object. Abort these
1498     steps.</span></p>
1499    
1500     <p class="no-ja-translation" data-ja-hash="a2c139226de4390d75b561512be824a7"><span class=en-original lang=en>If the attempt succeeds, then <a href=#decode-a-script-resource title="decode a script
1501     resource">decode the script resource</a> to obtain its <var title="">source</var>.</span></p>
1502    
1503 wakaba 1.46 <p class="no-ja-translation" data-ja-hash="c880bce97c5a1aadccd8989fc4ec8551"><span class=en-original lang=en>Let <var title="">language</var> be JavaScript.</span></p>
1504 wakaba 1.12
1505 wakaba 1.53 <p class="note has-ja-translation" data-ja-hash="5ba762159d9de3f8bd326fe0bcfac206"><span class=en-original lang=en>As with <code>script</code> elements, the MIME
1506     type of the script is ignored. Unlike with <code>script</code>
1507     elements, there is no way to override the type. It's always
1508     assumed to be JavaScript.</span><span class=ja-translation lang=ja><code>script</code> 要素と同様に、スクリプトの MIME 型は無視します。
1509 wakaba 1.12 <code>script</code> 要素とは異なり、
1510     型を上書きする方法はありません。スクリプトは常に JavaScript
1511 wakaba 1.53 と仮定します。</span></p> <!-- XXX people will complain about
1512 wakaba 1.11 this. I guess we might want to examine the MIME type... -->
1513 wakaba 1.53
1514     </li>
1515 wakaba 1.11
1516     <li>
1517 wakaba 1.23
1518 wakaba 1.53 <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
1519     created, as follows.</span></p>
1520    
1521     <p class="no-ja-translation" data-ja-hash="2dfcd0f76cde607de6cc88d70f390825"><span class=en-original lang=en>Create a new <span>script execution environment</span>
1522     set up as appropriate for the scripting language <var title="">language</var>.</span></p>
1523 wakaba 1.46
1524     <p class="no-ja-translation" data-ja-hash="fdf8b5f9ba18a31a8f48670142f51442"><span class=en-original lang=en>Parse/compile/initialize <var title="">source</var> using that
1525 wakaba 1.53 <span>script execution environment</span>, as appropriate for <var title="">language</var>, and thus obtain a <span>list of code
1526     entry-points</span>; set the <i>initial code entry-point</i> to
1527     the entry-point for any executable code to be immediately run.</span></p>
1528    
1529     <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>
1530    
1531     <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>
1532    
1533     <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
1534     UTF-8. (This is just used for encoding non-ASCII characters in the
1535     query component of URLs.)</span></p>
1536 wakaba 1.46
1537     <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>
1538 wakaba 1.9
1539 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="9f54fba41a34171b216a6a1d3c585815"><span class=en-original lang=en>Create a new <span>script group</span> and add the <span title=concept-script>script</span> to it.</span></p>
1540    
1541     </li>
1542 wakaba 1.9
1543     <li>
1544 wakaba 1.53
1545     <p class="no-ja-translation" data-ja-hash="daa2376af7239911c9c5816ba5177550"><span class=en-original lang=en><strong>Closing orphan workers</strong>: Start monitoring the
1546     worker such that as soon as it stops being either an <a href=#active-needed-worker>active
1547     needed worker</a> or a <a href=#suspendable-worker>suspendable worker</a>, <var title="">worker global scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is set
1548     to true and <span title="queue a task">a task is queued</span> to
1549     <span>fire a simple event</span> called <code title=event-close>close</code> at <var title="">worker global
1550     scope</var>.</span></p>
1551    
1552     </li>
1553 wakaba 1.29
1554     <li>
1555 wakaba 1.53
1556     <p class="no-ja-translation" data-ja-hash="24a8fa04f32239e0dafc1e98e466d6b4"><span class=en-original lang=en><strong>Suspending workers</strong>: Start monitoring the
1557     worker, such that whenever <var title="">worker global
1558     scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is false
1559     and the worker is a <a href=#suspendable-worker>suspendable worker</a>, the user
1560     agent suspends execution of script in that worker until such time
1561     as either the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag switches
1562     to true or the worker stops being a <a href=#suspendable-worker>suspendable
1563     worker</a>.</span></p>
1564    
1565     </li>
1566 wakaba 1.29
1567     <li>
1568 wakaba 1.53
1569     <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
1570     <span title=concept-script>script</span>'s <i>initial code
1571     entry-point</i>, and let that run until it either returns, fails
1572     to catch an exception, or gets prematurely aborted by the
1573     "<a href=#kill-a-worker>kill a worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>"
1574     algorithms defined below.</span></p>
1575    
1576     <p class="note no-ja-translation" data-ja-hash="72d51fd74daed6be35c6217a615ae065"><span class=en-original lang=en>If the script gets aborted by the "<a href=#kill-a-worker>kill a
1577     worker</a>" algorithm, then that same algorithm will cause
1578     there to only be a single <span title=concept-task>task</span>
1579     in the <span>event loop</span> at the next step, namely the task
1580     for the <code title=message-close>close</code> event. The
1581     "<a href=#terminate-a-worker>terminate a worker</a>" algorithm removes all the
1582     events.</span></p>
1583    
1584     </li>
1585 wakaba 1.9
1586 wakaba 1.57 <li><p class="no-ja-translation" data-ja-hash="02b2185e23c1f1cac86202ca9def46e6"><span class=en-original lang=en>If <var title="">worker global scope</var> is actually a
1587     <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the worker is
1588     a dedicated worker), then open the <span>port message queue</span>
1589     of the worker's implicit port.</span></li>
1590    
1591 wakaba 1.9 <li>
1592 wakaba 1.53
1593     <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
1594     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
1595     to true.</span></p>
1596    
1597     </li>
1598 wakaba 1.46
1599     <li>
1600 wakaba 1.53
1601     <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
1602     <span title="task queue">task queues</span>, if any. The user
1603     agent may pick any <span>task queue</span>.</span></p>
1604    
1605     <p class="note no-ja-translation" data-ja-hash="2a401c207ed88f5206b2eb8a90fc91a6"><span class=en-original lang=en>The handling of events or the execution of
1606     callbacks might get prematurely aborted by the "<a href=#kill-a-worker>kill a
1607     worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>" algorithms
1608     defined below.</span></p>
1609    
1610     </li>
1611 wakaba 1.9
1612     <li>
1613 wakaba 1.53
1614     <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
1615     <span>task queue</span>.</span></p>
1616    
1617     </li>
1618 wakaba 1.9
1619     <li>
1620 wakaba 1.53
1621     <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
1622     <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
1623     to false, then jump back to the step above labeled <i>event
1624     loop</i>.</span></p>
1625    
1626     </li>
1627 wakaba 1.9
1628     <li>
1629 wakaba 1.53
1630 wakaba 1.46 <p class="no-ja-translation" data-ja-hash="76aff645037fb93242c0b3e0ed29b90b"><span class=en-original lang=en>Freeze the <span>script group</span>.</span></p>
1631    
1632     <p class="note no-ja-translation" data-ja-hash="d32bd424c711e966967069f368ca26ad"><span class=en-original lang=en>This kills timers, database transactions, etc.</span></p>
1633 wakaba 1.25
1634 wakaba 1.53 </li>
1635    
1636 wakaba 1.25 <li>
1637 wakaba 1.29
1638 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="b60d2d9ff8d6f061c1d01d9ae68633f9"><span class=en-original lang=en>For each <code><a href=#worker>Worker</a></code> or <code><a href=#sharedworker>SharedWorker</a></code>
1639     object associated with <var title="">worker global scope</var>,
1640     <span>queue a task</span> to <span>fire a simple event</span>
1641     called <code title=event-close>close</code> at that object.</span></p>
1642    
1643     </li>
1644    
1645     </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
1646     run the following steps in parallel with the worker's main loop (the
1647     "<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p>
1648    
1649     <ol><li><p class="no-ja-translation" data-ja-hash="8630cda4abf56b446b4dd74cd6e5ed64"><span class=en-original lang=en>If the worker's <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object's
1650     <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is
1651     false, <span>queue a task</span> to <span>fire a simple
1652     event</span> called <code title=event-close>close</code> at the
1653     worker's <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object.</span></li>
1654    
1655     <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
1656     true.</span></li>
1657    
1658     <li><p class="no-ja-translation" data-ja-hash="0d93ff66f05d53293a2d4f713bc94c6b"><span class=en-original lang=en>Wait a user-agent-defined amount of time. If the "<a href=#run-a-worker>run
1659     a worker</a>" processing model defined above immediately starts
1660     running event listeners registered for the <code title=event-close>close</code> event, this time should not be
1661     zero &mdash; the idea is that the <code title=event-close>close</code> event can be used to clean up
1662     when shutting down unexpectedly.</span></li>
1663    
1664     <li><p class="no-ja-translation" data-ja-hash="e062300b1a0b646e14e0f8d084f3ab6a"><span class=en-original lang=en>If there are any <span title=concept-task>tasks</span>
1665     queued in the <span>event loop</span>'s <span title="task
1666     queue">task queues</span> other than the <code title=event-close>close</code> event that this algorithm just
1667     added, discard them without processing them.</span></li>
1668    
1669     <li><p class="no-ja-translation" data-ja-hash="e9d30d31f5050c8a6a15b9c403a3573a"><span class=en-original lang=en>If the <code title=event-close>close</code> event that
1670     this algorithm just queued hasn't yet been dispatched, then abort
1671     the script currently running in the worker.</span></li>
1672    
1673     <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>
1674    
1675     <li><p class="has-ja-translation" data-ja-hash="6f55d58072eaadf9aaac96514d919df8"><span class=en-original lang=en>Abort the script currently running in the worker (if any
1676     script is running, then it will be a handler for the <code title=event-close>close</code> event).</span><span class=ja-translation lang=ja>労働者中で現在走っているスクリプトを停止します
1677 wakaba 1.36 (何かスクリプトが走っているとすれば、それは <code
1678     title=event-close>close</code>
1679 wakaba 1.53 事象の取扱器のはずです)。</span></li>
1680 wakaba 1.9
1681 wakaba 1.53 </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>"
1682     processing model on a worker at any time, e.g. in response to user
1683     requests, in response to CPU quota management, or when a worker
1684     stops being an <a href=#active-needed-worker>active needed worker</a> if the worker
1685     continues executing even after its <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag was
1686     set to true.</span></p>
1687    
1688     <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
1689     the following steps in parallel with the worker's main loop (the
1690     "<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p>
1691    
1692     <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
1693     <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to
1694     true.</span></li>
1695    
1696     <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>
1697     queued in the <span>event loop</span>'s <span title="task
1698     queue">task queues</span>, discard them without processing
1699     them.</span></li>
1700    
1701     <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>
1702    
1703     <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
1704     actually a <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the
1705     worker is a dedicated worker), then empty the <span>port message
1706     queue</span> of the port that the worker's implicit port is
1707     entangled with.</span></li>
1708    
1709 wakaba 1.58 </ol><h3 id=runtime-script-errors class="has-ja-translation" data-ja-hash="eb260f04266c3b94080b5c3f88c55a31"><span class=en-original lang=en><span class=secno>4.7 </span>Runtime script errors</span><span class=ja-translation lang=ja><span class=secno>4.7 </span>実行時スクリプト誤り</span></h3>
1710 wakaba 1.53
1711     <p class="no-ja-translation" data-ja-hash="2e6e00789575d199b168fda8db61c811"><span class=en-original lang=en>Whenever a runtime script error occurs in one of the worker's
1712     scripts, if the error did not occur while handling a previous script
1713     error, the user agent must <span>queue a task</span> to <a href=#fire-an-error-event>fire
1714     an error event</a> at the the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>
1715     object.</span></p>
1716    
1717     <p class="no-ja-translation" data-ja-hash="5e3eb9f9d97fa8709f5aaf8f872611d6"><span class=en-original lang=en>For shared workers, if the error is still <i title="">not
1718     handled</i> afterwards, or if the error occured while handling a
1719     previous script error, the error should be reported to the user.</span></p>
1720    
1721     <p class="no-ja-translation" data-ja-hash="e6584991b2671ceb879158b25663381c"><span class=en-original lang=en>For dedicated workers, if the error is still <i title="">not
1722     handled</i> afterwards, or if the error occured while handling a
1723     previous script error, the user agent must further <span>queue a
1724     task</span> to <a href=#fire-an-error-event>fire an error event</a> at the
1725     <code><a href=#worker>Worker</a></code> object associated with the worker.</span></p>
1726    
1727     <p class="no-ja-translation" data-ja-hash="610ce7db96b7c73bb195bac28bcf2923"><span class=en-original lang=en>When the user agent is to <dfn id=fire-an-error-event>fire an error event</dfn> at a
1728     <code><a href=#worker>Worker</a></code> object, it must dispatch an event that uses the
1729     <code><a href=#errorevent>ErrorEvent</a></code> interface, with the name <code title=event-error>error</code>, that doesn't bubble and is
1730     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
1731     appropriately. The default action of this event depends on whether
1732     the <code><a href=#worker>Worker</a></code> object is itself in a worker. If it is, and
1733     that worker is also a dedicated worker, then the user agent must
1734     again <span>queue a task</span> to <a href=#fire-an-error-event>fire an error event</a>
1735     at the <code><a href=#worker>Worker</a></code> object associated with <em>that</em>
1736     worker. Otherwise, then the error should be reported to the
1737     user.</span></p>
1738    
1739     <hr><pre class="idl no-ja-translation" data-ja-hash="b54be6bb73d5cd3a8a7bdcf79caf2a73"><span class=en-original lang=en>interface <dfn id=errorevent>ErrorEvent</dfn> : Event {
1740     readonly attribute DOMObject <a href=#dom-errorevent-message title=dom-ErrorEvent-message>message</a>;
1741     readonly attribute DOMObject <a href=#dom-errorevent-filename title=dom-ErrorEvent-filename>filename</a>;
1742     readonly attribute unsigned long <a href=#dom-errorevent-lineno title=dom-ErrorEvent-lineno>lineno</a>;
1743     void <a href=#dom-errorevent-initerrorevent title=dom-ErrorEvent-initErrorEvent>initErrorEvent</a>(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMObject messageArg, in DOMObject filenameArg, in unsigned long linenoArg);
1744     void <a href=#dom-errorevent-initerroreventns title=dom-ErrorEvent-initErrorEventNS>initErrorEventNS</a>(in DOMString namespaceURIArg, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMObject messageArg, in DOMObject filenameArg, in unsigned long linenoArg);
1745 wakaba 1.48 };</span></pre>
1746    
1747 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="33aa65558573be92301ab9449fabe341" data-ja-real-hash="97eaa7ff6843ee05db89a132a3a281fc"><span class=en-original lang=en>The <dfn id="en-dom-errorevent-initerrorevent" title=dom-ErrorEvent-initErrorEvent><code>initErrorEvent()</code></dfn>
1748     and <dfn id="en-dom-errorevent-initerroreventns" title=dom-ErrorEvent-initErrorEventNS><code>initErrorEventNS()</code></dfn>
1749     methods must initialize the event in a manner analogous to the
1750     similarly-named methods in the DOM3 Events interfaces. <a href=#refsDOM3EVENTS>[DOM3EVENTS]</a></span><span class=ja-translation lang=ja><dfn id=dom-errorevent-initerrorevent
1751 wakaba 1.48 title=dom-ErrorEvent-initErrorEvent><code>initErrorEvent()</code></dfn>
1752 wakaba 1.53 メソッドと <dfn id=dom-errorevent-initerroreventns
1753     title=dom-ErrorEvent-initErrorEventNS><code>initMessageEventNS()</code></dfn>
1754     メソッドは、 DOM3 事象界面の似たような名前のメソッドと同じような方法で事象を初期化しなければ<em class=rfc2119 title="MUST">なりません</em>。
1755     <a
1756     href=#refsDOM3EVENTS>[DOM3EVENTS]</a></span></p>
1757    
1758     <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>
1759     attribute represents the error message.</span></p>
1760    
1761     <p class="no-ja-translation" data-ja-hash="100a7ac19dcba0c731509d478e6ec398"><span class=en-original lang=en>The <dfn id=dom-errorevent-filename title=dom-ErrorEvent-filename><code>filename</code></dfn>
1762     attribute represents the <span>absolute URL</span> of the script in
1763     which the error originally occured.</span></p>
1764    
1765     <p class="no-ja-translation" data-ja-hash="a47accbc3ae3210c80a37feb5005f2fa"><span class=en-original lang=en>The <dfn id=dom-errorevent-lineno title=dom-ErrorEvent-lineno><code>lineno</code></dfn>
1766     attribute represents the line number where the error occured in the
1767     script.</span></p>
1768    
1769    
1770    
1771 wakaba 1.58 <h3 id=creating-workers class="has-ja-translation" data-ja-hash="f0a4732d38d01e3d103b68468f9fe234"><span class=en-original lang=en><span class=secno>4.8 </span>Creating workers</span><span class=ja-translation lang=ja><span class=secno>4.8 </span>労働者の作成</span></h3>
1772 wakaba 1.53
1773 wakaba 1.58 <h4 id=the-abstractworker-abstract-interface class="has-ja-translation" data-ja-hash="fe5227371e801f4ac588d0d07472a900" data-ja-real-hash="fea226dea005bb8238586cd20b34aa2f"><span class=en-original lang=en><span class=secno>4.8.1 </span>The <code><a href=#abstractworker>AbstractWorker</a></code> abstract interface</span><span class=ja-translation lang=ja><span class=secno>4.8.1 </span><code><a href=#abstractworker>AbstractWorker</a></code> 抽象界面</span></h4>
1774 wakaba 1.53
1775     <pre class="idl no-ja-translation" data-ja-hash="2cc701fd05739f7b49c218a862b9aebd"><span class=en-original lang=en>interface <dfn id=abstractworker>AbstractWorker</dfn> {
1776     attribute <span>EventListener</span> <a href=#handler-abstractworker-onerror title=handler-AbstractWorker-onerror>onerror</a>;
1777     attribute <span>EventListener</span> <a href=#handler-abstractworker-onclose title=handler-AbstractWorker-onclose>onclose</a>;
1778 wakaba 1.36 };</span></pre>
1779 wakaba 1.29
1780 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="b6a7afc5ececf4988bace69746cd2a40"><span class=en-original lang=en>Objects implementing the <code><a href=#abstractworker>AbstractWorker</a></code> interface
1781     must also implement the <code>EventTarget</code> interface.</span></p>
1782    
1783     <p class="no-ja-translation" data-ja-hash="4b75dd261aa7a8f6974d748a7a9058cb"><span class=en-original lang=en>The following are the <span>event handler DOM attributes</span>
1784     that must be supported by objects implementing the
1785     <code><a href=#abstractworker>AbstractWorker</a></code> interface:</span></p>
1786    
1787     <dl><dt 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></dt>
1788    
1789     <dd><p class="no-ja-translation" data-ja-hash="573f3e6ca7f69abfb4531d09857750cb"><span class=en-original lang=en>Must be invoked whenever an <code title=event-error>error</code> event is targeted at or bubbles
1790     through the <code><a href=#abstractworker>AbstractWorker</a></code> object.</span></dd>
1791    
1792     <dt class="no-ja-translation" data-ja-hash="de415b491da4bc149b8851a368c7e8cb"><span class=en-original lang=en><dfn id=handler-abstractworker-onclose title=handler-AbstractWorker-onclose><code>onclose</code></dfn></span></dt>
1793    
1794     <dd><p class="no-ja-translation" data-ja-hash="f5b00f8562768f69d758e445b6ad459a"><span class=en-original lang=en>Must be invoked whenever an <code title=event-close>close</code> event is targeted at or bubbles
1795     through the <code><a href=#abstractworker>AbstractWorker</a></code> object.</span></dd>
1796    
1797 wakaba 1.58 </dl><h4 id=dedicated-workers-and-the-worker-interface class="no-ja-translation" data-ja-hash="4d0010617afd55731512f81d11e29921"><span class=en-original lang=en><span class=secno>4.8.2 </span>Dedicated workers and the <code><a href=#worker>Worker</a></code> interface</span></h4>
1798 wakaba 1.53
1799     <pre class="idl no-ja-translation" data-ja-hash="c43cee512bbba24be75ff632f3e916f7"><span class=en-original lang=en>[<a href=#dom-worker title=dom-Worker>Constructor</a>(in DOMString scriptURL)]
1800     interface <dfn id=worker>Worker</dfn> : <a href=#abstractworker>AbstractWorker</a> {
1801     void <a href=#dom-worker-terminate title=dom-Worker-terminate>terminate</a>();
1802 wakaba 1.29
1803 wakaba 1.53 void <a href=#dom-worker-postmessage title=dom-Worker-postMessage>postMessage</a>(in any message, [Optional] in <span>MessagePortArray</span> ports);<!--
1804 wakaba 1.50 <span>MessagePort</span> <span title="dom-Worker-startConversation">startConversation</span>(in any message);-->
1805 wakaba 1.53 attribute <span>EventListener</span> <a href=#handler-worker-onmessage title=handler-Worker-onmessage>onmessage</a>;
1806 wakaba 1.36 };</span></pre>
1807 wakaba 1.9
1808 wakaba 1.53 <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,
1809     when invoked, must cause the "<a href=#terminate-a-worker>terminate a worker</a>"
1810     algorithm to be run on the worker with with the object is
1811     associated.</span></p>
1812    
1813     <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
1814     <code>MessagePort</code> associated with them. This port is part of
1815     a channel that is set up when the worker is created, but it is not
1816     exposed. This object must never be garbage collected before the
1817     <code><a href=#worker>Worker</a></code> object.</span></p>
1818 wakaba 1.29
1819 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="c23521cac24860bea84e15cd64bf43af"><span class=en-original lang=en>All messages received by that port must immediately be
1820     retargetted at the <code><a href=#worker>Worker</a></code> object.</span></p>
1821 wakaba 1.29
1822 wakaba 1.53 <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><!--
1823 wakaba 1.42 and <dfn
1824     title="dom-Worker-startConversation"><code>startConversation()</code></dfn>-->
1825 wakaba 1.53 method<!--s (startConversation)--> on <code><a href=#worker>Worker</a></code> objects
1826     must act as if, when invoked, it<!--/they (startConversation)-->
1827     immediately invoked the method of the same name on the port, with
1828     the same arguments, and returned the same return value.</span></p>
1829    
1830     <p class="no-ja-translation" data-ja-hash="7ebe482d14f3abdce61558aaf4bba787"><span class=en-original lang=en>The following are the <span>event handler DOM attributes</span>
1831     that must be supported by objects implementing the
1832     <code><a href=#worker>Worker</a></code> interface:</span></p>
1833    
1834     <dl><dt 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></dt>
1835    
1836     <dd><p class="has-ja-translation" data-ja-hash="91a2ce3a21f7ed687afe756baa5387d8" data-ja-real-hash="4560959a830972091e7d42d3d9b36778"><span class=en-original lang=en>Must be invoked whenever a <code title=event-Worker-message>message</code> event is targeted
1837     at or bubbles through the <code><a href=#worker>Worker</a></code> object.</span><span class=ja-translation lang=ja><code title=event-Worker-message>message</code> 事象が当該 <code><a href=#worker>Worker</a></code> オブジェクトを対象としているか、泡立って当該オブジェクトを通過する時に、
1838     呼び出されなければなりません。</span></dd>
1839    
1840     </dl><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
1841     user agent must run the following steps:</span></p>
1842    
1843     <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
1844     title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span></li>
1845    
1846     <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>
1847     exception.</span><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
1848     例外を投げます。</span></li>
1849    
1850     <li><p class="no-ja-translation" data-ja-hash="b087dd24bd7b57655bef9f719db30b9a"><span class=en-original lang=en>If the <span>origin</span> of the resulting <span>absolute
1851     URL</span> is not the <span title="same origin">same</span> as the
1852     origin of the script that invoked the constructor, then throw a
1853     <span>security exception</span>.</span></li>
1854    
1855     <li><p class="no-ja-translation" data-ja-hash="b5bddf55144f8b1ff3c2a755b8ada3e0"><span class=en-original lang=en><span>Create a new <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code>
1856     object</span>. Let <var title="">worker global scope</var> be this
1857     new object.</span></li>
1858    
1859     <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
1860     <var title="">worker global scope</var>. Let <var title="">worker</var> be this new object.</span></li>
1861    
1862     <li><p class="no-ja-translation" data-ja-hash="07cc057567324a83e25ec6344dc011a7"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span> owned
1863     by the <span>script execution context</span> of the script that
1864     invoked the method. Let this be the <var title="">outside
1865     port</var>.</span></li>
1866    
1867     <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
1868     title="">worker</var> に関連付けます。</span></li>
1869    
1870     <li><p class="no-ja-translation" data-ja-hash="2d1b035dbaad3feca57eb124d161b034"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span> owned
1871     by <var title="">worker global scope</var>. Let <var title="">inside port</var> be this new object.</span></li>
1872    
1873     <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>
1874    
1875     <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
1876     <var title="">inside port</var>.</span></li>
1877    
1878     <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
1879     steps asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、以降の段階を非同期に走らせます。</span></li>
1880    
1881     <li><p class="has-ja-translation" data-ja-hash="faa1ae1399f8e4f6b212fe45bba07893"><span class=en-original lang=en>Open <var title="">inside port</var>'s <span>port message
1882     queue</span>.</span><span class=ja-translation lang=ja><var title="">inside port</var> の<span>ポート・メッセージ待ち行列</span>を開きます。</span></li>
1883    
1884     <li><p class="has-ja-translation" data-ja-hash="5eaa92a75cbbf580809052327262059a"><span class=en-original lang=en>Open <var title="">outside port</var>'s <span>port message
1885     queue</span>.</span><span class=ja-translation lang=ja><var title="">outside port</var> の<span>ポート・メッセージ待ち行列</span>を開きます。</span></li>
1886 wakaba 1.29
1887 wakaba 1.13 <li>
1888 wakaba 1.32
1889 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="8d52f75615bdf14ecca1950ce2fe376b"><span class=en-original lang=en><a href=#run-a-worker>Run a worker</a> for the resulting <span>absolute
1890     URL</span>, with the <span>script browsing context</span> of the
1891     script that invoked the method as the <var title="">owner browsing
1892     context</var>, and with <var title="">worker global scope</var> as
1893     the global scope.</span></p>
1894    
1895     </li>
1896    
1897 wakaba 1.58 </ol><h4 id=shared-workers-and-the-sharedworker-interface class="no-ja-translation" data-ja-hash="3b77b75af8223662d0137a2dd84957ab"><span class=en-original lang=en><span class=secno>4.8.3 </span>Shared workers and the <code><a href=#sharedworker>SharedWorker</a></code> interface</span></h4>
1898 wakaba 1.53
1899     <pre class="idl no-ja-translation" data-ja-hash="f72ede7ba5104464a3b52f4315042c5d"><span class=en-original lang=en>[<a href=#dom-sharedworker title=dom-SharedWorker>Constructor</a>(in DOMString scriptURL, in DOMString name)]
1900     interface <dfn id=sharedworker>SharedWorker</dfn> : <a href=#abstractworker>AbstractWorker</a> {
1901     readonly attribute <span>MessagePort</span> <a href=#dom-sharedworker-port title=dom-SharedWorker-port>port</a>;
1902 wakaba 1.36 };</span></pre>
1903 wakaba 1.29
1904 wakaba 1.53 <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>
1905     attribute must return the value it was assigned by the object's
1906     constructor. It represents the <code>MessagePort</code> for
1907     communicating with the shared worker.</span></p>
1908    
1909     <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>
1910     constructor is invoked, the user agent must run the following
1911     steps:</span></p>
1912    
1913     <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
1914     title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span></li>
1915    
1916     <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>
1917     exception.</span><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
1918     例外を投げます。</span></li>
1919    
1920     <li><p class="no-ja-translation" data-ja-hash="b087dd24bd7b57655bef9f719db30b9a"><span class=en-original lang=en>If the <span>origin</span> of the resulting <span>absolute
1921     URL</span> is not the <span title="same origin">same</span> as the
1922     origin of the script that invoked the constructor, then throw a
1923     <span>security exception</span>.</span></li>
1924 wakaba 1.11
1925 wakaba 1.13 <li>
1926 wakaba 1.32
1927 wakaba 1.53 <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>
1928    
1929     <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
1930     shortly be associated with a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>
1931     object. Let this <code><a href=#sharedworker>SharedWorker</a></code> object be <var title="">worker</var>.</span></li>
1932    
1933     <li><p class="no-ja-translation" data-ja-hash="07cc057567324a83e25ec6344dc011a7"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span> owned
1934     by the <span>script execution context</span> of the script that
1935     invoked the method. Let this be the <var title="">outside
1936     port</var>.</span></li>
1937 wakaba 1.29
1938 wakaba 1.53 <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>
1939 wakaba 1.13
1940     <li>
1941 wakaba 1.11
1942 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="a5402d09db1c68d0e688bfc726bfb83a"><span class=en-original lang=en>If there exists a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object
1943     whose <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a>
1944     flag is false, whose <code title=dom-WorkerGlobalScope-name>name</code> attribute is
1945     exactly equal to the <var title="">name</var> argument, and
1946     whose <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute
1947     represents an <span>absolute URL</span> that has the <span>same
1948     origin</span> as the resulting <span>absolute URL</span>, then
1949     run these substeps:</span></p>
1950    
1951     <ol><li><p class="no-ja-translation" data-ja-hash="f7fe188afbd752dfa48eb004c7dadd66"><span class=en-original lang=en>Let <var title="">worker global scope</var> be that
1952     <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object.</span></li>
1953    
1954     <li><p class="no-ja-translation" data-ja-hash="ee651c08754dcaadffc45dd26ebf68c2"><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>
1955     attribute represents an <span>absolute URL</span> that is not
1956     exactly equal to the resulting <span>absolute URL</span>, then
1957     throw a <code>URL_MISMATCH_ERR</code> exception and abort all
1958     these steps. <span class=XXX>code 21</span></span></li>
1959    
1960     <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
1961     global scope</var> に関連付けます。</span></li>
1962    
1963     <li><p class="no-ja-translation" data-ja-hash="bab9c8cea075e0f3614c731f09b49892"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span>
1964     owned by <var title="">worker global scope</var>. Let this
1965     be the <var title="">inside port</var>.</span></li>
1966    
1967     <li><p class="no-ja-translation" data-ja-hash="bf2642ced659847cb4402165d2ab3a8e"><span class=en-original lang=en><span>Entangle</span> <var title="">outside port</var>
1968     and <var title="">inside port</var>.</span></li>
1969    
1970     <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
1971     step asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、
1972     次の段階を非同期に実行します。</span></li>
1973    
1974     <li><p class="no-ja-translation" data-ja-hash="b7f48d67996c9befeefb2dede0c814bd"><span class=en-original lang=en>Create an event that uses the <code>MessageEvent</code>
1975     interface, with the name <code title=event-connect>connect</code>, which does not bubble, is
1976     cancelable, has no default action, has a <code title=dom-MessageEvent-data>data</code> attribute whose value
1977     is the empty string and has a <code title=dom-MessageEvent-ports>ports</code>
1978     attribute whose value is an array containing only the newly
1979     created port, and <span>queue a task</span> to dispatch the
1980     event at <var title="">worker global scope</var>.</span></li>
1981    
1982     <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>
1983    
1984     </ol></li>
1985    
1986     <li><p class="no-ja-translation" data-ja-hash="08b38f99ab8a1b8451edf6d12f8f60d9"><span class=en-original lang=en><span>Create a new <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code>
1987     object</span>. Let <var title="">worker global scope</var> be
1988     this new object.</span></li>
1989    
1990     <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
1991     global scope</var> に関連付けます。</span></li>
1992    
1993     <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
1994     <var title="">worker global scope</var> to <var title="">name</var>.</span></li>
1995    
1996     <li><p class="no-ja-translation" data-ja-hash="2d1b035dbaad3feca57eb124d161b034"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span>
1997     owned by <var title="">worker global scope</var>. Let <var title="">inside port</var> be this new object.</span></li>
1998    
1999     <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
2000     <var title="">inside port</var>.</span></li>
2001    
2002     </ol></li>
2003    
2004     <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 step
2005     asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、
2006     次の段階を非同期に実行します。</span></li>
2007    
2008     <li><p class="no-ja-translation" data-ja-hash="b7f48d67996c9befeefb2dede0c814bd"><span class=en-original lang=en>Create an event that uses the <code>MessageEvent</code>
2009     interface, with the name <code title=event-connect>connect</code>, which does not bubble, is
2010     cancelable, has no default action, has a <code title=dom-MessageEvent-data>data</code> attribute whose value is
2011     the empty string and has a <code title=dom-MessageEvent-ports>ports</code> attribute
2012     whose value is an array containing only the newly created port, and
2013     <span>queue a task</span> to dispatch the event at <var title="">worker global scope</var>.</span></li>
2014 wakaba 1.13
2015     <li>
2016 wakaba 1.25
2017 wakaba 1.53 <p class="no-ja-translation" data-ja-hash="8d52f75615bdf14ecca1950ce2fe376b"><span class=en-original lang=en><a href=#run-a-worker>Run a worker</a> for the resulting <span>absolute
2018     URL</span>, with the <span>script browsing context</span> of the
2019     script that invoked the method as the <var title="">owner browsing
2020     context</var>, and with <var title="">worker global scope</var> as
2021     the global scope.</span></p>
2022    
2023     </li>
2024    
2025     </ol><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>
2026 wakaba 1.15
2027 wakaba 1.50 <!-- the XXX below is for collapsing this interface onto WorkerGlobalScope so it looks like just one interface - the inheritance is a spec fiction only -->
2028 wakaba 1.56 <pre class="idl no-ja-translation" data-ja-hash="0aab87846ad83cdf42c38294176aa5fc"><span class=en-original lang=en>[NoInterfaceObject, ImplementedOn=WorkerGlobalScope, XXX] interface <dfn id=workerutils>WorkerUtils</dfn> {
2029 wakaba 1.53 void <a href=#dom-workerglobalscope-importscripts title=dom-WorkerGlobalScope-importScripts>importScripts</a>([Variadic] in DOMString urls);
2030 wakaba 1.56 readonly attribute <a href=#worker-navigator title=worker-Navigator>Navigator</a> <a href=#dom-worker-navigator title=dom-worker-navigator>navigator</a>;
2031 wakaba 1.55 <span>Database</span> <a href=#dom-opendatabase title=dom-opendatabase>openDatabase</a>(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize);
2032 wakaba 1.36 };</span></pre>
2033 wakaba 1.16
2034 wakaba 1.53 <p class="has-ja-translation" data-ja-hash="fc1e0d30e2c0869e54fb2487a7dd6836" data-ja-real-hash="a9f04ef5503be39e966b5cc5744a3d1c"><span class=en-original lang=en>Objects that implement the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code>
2035     interface must also implement the <code><a href=#workerutils>WorkerUtils</a></code>
2036     interface.</span><span class=ja-translation lang=ja><code><a href=#workerglobalscope>WorkerGlobalScope</a></code> 界面を実装するオブジェクトは、 <code><a href=#workerutils>WorkerUtils</a></code> 界面も実装しなければ<em class=rfc2119 title="MUST">なりません</em>。</span></p>
2037    
2038     <p class="no-ja-translation" data-ja-hash="66c8457f878286e5a4ecb06e2d847359"><span class=en-original lang=en>Objects that implement the <code><a href=#workerutils>WorkerUtils</a></code> interface
2039     must also implement the <code>WindowTimers</code> interface. (This
2040     interface provides the <code title="">setTimeout()</code> method and
2041 wakaba 1.57 its friends.)</span></p><!-- XXX ref -->
2042 wakaba 1.53
2043     <p class="XXX no-ja-translation" data-ja-hash="fffa5f76ab27c1602edf28b5c8fbcc6d"><span class=en-original lang=en>Need to define a sync database API.</span></p>
2044 wakaba 1.16
2045     <!-- XXX ApplicationCache -->
2046 wakaba 1.53
2047 wakaba 1.16 <!-- XXX debugging: void log(in DOMString s); // log to console -->
2048 wakaba 1.53
2049     <hr><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>
2050     objects, etc) are not available to workers in this version of this
2051     specification.</span><span class=ja-translation lang=ja>DOM API (<code>Node</code> オブジェクト、 <code>Document</code>
2052     オブジェクト、その他) は、この版のこの仕様書では労働者に利用可能ではありません。</span></p>
2053    
2054    
2055     <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>
2056 wakaba 1.16
2057 wakaba 1.53 <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
2058     <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, the user agent must run the
2059     following steps:</span></p>
2060 wakaba 1.32
2061 wakaba 1.53 <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
2062     anything. Abort these steps.</span><span class=ja-translation lang=ja>引数がない場合、何も返さずに返ります。
2063     これらの段階を停止します。</span></li>
2064 wakaba 1.22
2065 wakaba 1.53 <li><p class="has-ja-translation" data-ja-hash="b89818b453add85fbb5ec1e963e3072c"><span class=en-original lang=en><span title="resolve a url">Resolve</span> each
2066     argument.</span><span class=ja-translation lang=ja>各引数を<span title="resolve a url">解決</span>します。</span></li>
2067    
2068     <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>
2069     exception.</span><span class=ja-translation lang=ja>いずれかが失敗した場合、 <code>SYNTAX_ERR</code> 例外を投げます。</span></li>
2070 wakaba 1.25
2071 wakaba 1.53 <!--
2072 wakaba 1.45 <li><p class="has-ja-translation" data-ja-hash="952d7bd44378695378ddf1084a1c5347"><span class=en-original lang=en>If any of the resulting <span title="absolute URL">absolute
2073     URLs</span> have an <span>origin</span> that is not the <span
2074     title="same origin">same</span> as the origin of the script that
2075     invoked the method, then throw a <span>security
2076     exception</span>.</span><span class=ja-translation lang=ja>結果として得られた<span title="absolute URL">絶対
2077 wakaba 1.36 URL</span>
2078     のいずれかが、メソッドを呼び出したスクリプトの<span>origin</span>と<span
2079     title="same origin">同じ</span>ではない起源を持つ場合、
2080 wakaba 1.45 <span>保安性例外</span>を投げます。</span></p></li>
2081     -->
2082 wakaba 1.42
2083     <li>
2084 wakaba 1.53
2085 wakaba 1.36 <p class="has-ja-translation" data-ja-hash="9a0a1930525c4231da8248d6b7847c8d"><span class=en-original lang=en>Attempt to <span>fetch</span> each resource identified by the
2086 wakaba 1.53 resulting <span title="absolute URLs">absolute URL</span>.</span><span class=ja-translation lang=ja>結果として得られた<span title="absolute URLs">絶対 URL</span>
2087 wakaba 1.36 によって識別される資源をそれぞれ<span>取得</span>しようと試みます。</span></p>
2088 wakaba 1.22
2089 wakaba 1.53 </li>
2090    
2091 wakaba 1.22 <li>
2092 wakaba 1.25
2093 wakaba 1.53 <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
2094     the first one, run these substeps:</span><span class=ja-translation lang=ja>各引数について、与えられた順に最初のものから、次の部分段階群を走らせます。</span></p>
2095    
2096     <ol><li>
2097    
2098     <p class="has-ja-translation" data-ja-hash="a5cd8fb5d75985afdc62f7ac228329d4"><span class=en-original lang=en>Wait for the fetching attempt for the corresponding resource
2099     to complete.</span><span class=ja-translation lang=ja>対応する資源を取得しようとする試みが完了するのを待ちます。</span></p>
2100    
2101     <p class="no-ja-translation" data-ja-hash="c821b5a32a4316df06e95e2117d4d21a"><span class=en-original lang=en>If the fetching attempt failed, throw a
2102     <code>NETWORK_ERR</code> exception and abort all these
2103     steps.</span></p>
2104    
2105     <p class="no-ja-translation" data-ja-hash="a2c139226de4390d75b561512be824a7"><span class=en-original lang=en>If the attempt succeeds, then <a href=#decode-a-script-resource title="decode a script
2106     resource">decode the script resource</a> to obtain its <var title="">source</var>.</span></p>
2107    
2108     <p class="no-ja-translation" data-ja-hash="c880bce97c5a1aadccd8989fc4ec8551"><span class=en-original lang=en>Let <var title="">language</var> be JavaScript.</span></p>
2109 wakaba 1.25
2110 wakaba 1.53 <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
2111     always assumed to be JavaScript, regardless of the MIME
2112     type.</span><span class=ja-translation lang=ja>労働者のスクリプトと同じく、ここでのスクリプトも、 MIME 型に関わらず常に
2113     JavaScript であるとみなします。</span></p> <!-- XXX -->
2114 wakaba 1.46
2115 wakaba 1.53 </li>
2116 wakaba 1.25
2117     <li>
2118 wakaba 1.53
2119     <p class="no-ja-translation" data-ja-hash="82bb5f7207d0f40963418cf33df6325b"><span class=en-original lang=en><span>Create a script</span>, using <var title="">source</var> as the script source and <var title="">language</var> as the scripting language, using the
2120     same global object, browsing context, character encoding, base
2121     URL, and script group as the <span title=concept-script>script</span> that was created by the
2122     worker's <a href=#run-a-worker>run a worker</a> algorithm.</span></p>
2123    
2124     <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
2125     returns, fails to parse, fails to catch an exception, or gets
2126     prematurely aborted by the "<a href=#kill-a-worker>kill a worker</a>" or
2127     "<a href=#terminate-a-worker>terminate a worker</a>" algorithms defined above.</span></p>
2128 wakaba 1.42
2129     <p class="no-ja-translation" data-ja-hash="41014f4a697396a3e02475a4d61a7472"><span class=en-original lang=en>If it failed to parse, then throw a
2130 wakaba 1.53 <code>SyntaxError</code><!-- XXX ref? --> exception and abort
2131     all these steps.</span></p>
2132 wakaba 1.25
2133 wakaba 1.53 <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
2134     aborted, then abort all these steps, letting the exception or
2135     aborting continue to be processed by the script that called the
2136     <code title=dom-WorkerGlobalScope-importScripts><a href=#dom-workerglobalscope-importscripts>importScripts()</a></code>
2137     method.</span></p>
2138 wakaba 1.42
2139 wakaba 1.53 <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
2140     worker</a>" algorithms abort the script then abort all these
2141     steps.</span></p>
2142    
2143     </li>
2144    
2145     </ol></li>
2146    
2147 wakaba 1.56 </ol><h3 id=the-navigator-object class="no-ja-translation" data-ja-hash="6a11027ebc14ad36700f251d60a84912"><span class=en-original lang=en><span class=secno>5.2 </span>The <code title=worker-Navigator><a href=#worker-navigator>Navigator</a></code> object</span></h3>
2148 wakaba 1.53
2149 wakaba 1.56 <p class="no-ja-translation" data-ja-hash="b0a33e2b5cacd5c4c5725f370211c7f4"><span class=en-original lang=en>The <dfn id=dom-worker-navigator title=dom-worker-navigator><code>navigator</code></dfn> attribute
2150     of the <code><a href=#workerutils>WorkerUtils</a></code> interface must return an instance of
2151     the <code title=worker-Navigator><a href=#worker-navigator>Navigator</a></code> interface, which
2152     represents the identity and state of the user agent (the
2153     client):</span></p>
2154 wakaba 1.53
2155 wakaba 1.56 <pre class="idl no-ja-translation" data-ja-hash="9903c3558c66ef46db40a21f226fd4df"><span class=en-original lang=en>interface <dfn id=worker-navigator title=worker-Navigator>Navigator</dfn> {
2156 wakaba 1.42 // objects implementing this interface also implement the interfaces listed below
2157     };</span></pre>
2158    
2159 wakaba 1.56 <p class="no-ja-translation" data-ja-hash="0d550bddba8cb2bf48821ea854423700"><span class=en-original lang=en>Objects implementing the <code title=worker-Navigator><a href=#worker-navigator>Navigator</a></code> interface must also
2160     implement the <span>NavigatorID</span> and
2161 wakaba 1.53 <span>NavigatorOnLine</span> interfaces specified in the HTML5
2162     specification. <a href=#refsHTML5>[HTML5]</a></span></p>
2163    
2164 wakaba 1.56 <p class="note no-ja-translation" data-ja-hash="f5bcc8027f8fec44d62321032c100730"><span class=en-original lang=en>The <code title=worker-Navigator><a href=#worker-navigator>Navigator</a></code>
2165     interface defined in this specification is different than the one
2166     defined in the HTML5 specification.</span></p>
2167 wakaba 1.53
2168    
2169 wakaba 1.57
2170 wakaba 1.53 <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>
2171    
2172 wakaba 1.57 <p class="no-ja-translation" data-ja-hash="fbf4ded40a72defee7324d1c805560fd"><span class=en-original lang=en>The <dfn id=dom-opendatabase title=dom-opendatabase><code>openDatabase()</code></dfn> method
2173     must act as defined for the API of the same name defined in the Web
2174     Storage specification, with the exception that where the API would
2175     use the <span>origin</span> of the <span>active document</span> of
2176     the <span>browsing context</span> of the <code>Window</code> object
2177     on which the method was supposedly invoked, it must instead use the
2178     <span>origin</span> of the script that invoked the method. <a href=#refsWEBSTORAGE>[WEBSTORAGE]</a></span></p>
2179 wakaba 1.53
2180    
2181    
2182     <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>
2183    
2184     <p class="no-ja-translation" data-ja-hash="891d0a43200fedd7ae183f012070bb93"><span class=en-original lang=en>There must be no interface objects and constructors available in
2185     the global scope of scripts whose <span>script execution
2186     context</span> is a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object except for
2187     the following:</span></p>
2188    
2189     <ul><li><p class="has-ja-translation" data-ja-hash="fefceafe7239d8df54847618da8d3ddd"><span class=en-original lang=en><code>XMLHttpRequest</code> and all interface objects and
2190     constructors defined by the XMLHttpRequest specifications, except
2191     that the <span>document response entity body</span> must always be
2192     null. <a href=#refsXHR>[XHR]</a></span><span class=ja-translation lang=ja>XMLHttpRequest 仕様書で定義されている
2193     <code>XMLHttpRequest</code> とすべての界面オブジェクトと構築器、
2194     ただし<span>文書応答実体本体</span>は常に null でなければ<em class=rfc2119 title="MUST">なりません</em>。 <a
2195     href=#refsXHR>[XHR]</a></span></li>
2196    
2197 wakaba 1.57 <li><p class="no-ja-translation" data-ja-hash="dd3bea5f0bf238db87ad9fb59c7be62a"><span class=en-original lang=en>The <code>WebSocket</code> interface object and
2198     constructor. <a href=#refsWEBSOCKET>[WEBSOCKET]</a></span></li>
2199 wakaba 1.53
2200 wakaba 1.57 <li><p class="no-ja-translation" data-ja-hash="939ce12ed8f8d8ce1888e6c380db792c"><span class=en-original lang=en>The <code>MessageChannel</code> interface object and
2201     constructor. <a href=#refsHTML5>[HTML5]</a></span></li>
2202 wakaba 1.53
2203     <li><p class="no-ja-translation" data-ja-hash="0ca0874e3173f58421ed4537975fdd7f"><span class=en-original lang=en>The <code title=dom-Worker><a href=#dom-worker>Worker()</a></code> and <code title=dom-SharedWorker><a href=#dom-sharedworker>SharedWorker(<var title="">url</var>)</a></code> constructors.</span></li>
2204    
2205     </ul><h3 id=worker-locations class="has-ja-translation" data-ja-hash="ae4aa0f882fcbd2ee8252e59113ec205"><span class=en-original lang=en><span class=secno>5.5 </span>Worker locations</span><span class=ja-translation lang=ja><span class=secno>5.5 </span>労働者の所在</span></h3>
2206    
2207     <pre class="idl no-ja-translation" data-ja-hash="8d12e26ffacf32cd9d10364c0255ab53"><span class=en-original lang=en>interface <dfn id=workerlocation>WorkerLocation</dfn> {
2208     readonly attribute DOMString <a href=#dom-workerlocation-href title=dom-WorkerLocation-href>href</a>;
2209     readonly attribute DOMString <a href=#dom-workerlocation-protocol title=dom-WorkerLocation-protocol>protocol</a>;
2210     readonly attribute DOMString <a href=#dom-workerlocation-host title=dom-WorkerLocation-host>host</a>;
2211     readonly attribute DOMString <a href=#dom-workerlocation-hostname title=dom-WorkerLocation-hostname>hostname</a>;
2212     readonly attribute DOMString <a href=#dom-workerlocation-port title=dom-WorkerLocation-port>port</a>;
2213     readonly attribute DOMString <a href=#dom-workerlocation-pathname title=dom-WorkerLocation-pathname>pathname</a>;
2214     readonly attribute DOMString <a href=#dom-workerlocation-search title=dom-WorkerLocation-search>search</a>;
2215     readonly attribute DOMString <a href=#dom-workerlocation-hash title=dom-WorkerLocation-hash>hash</a>;
2216     };</span></pre>
2217    
2218     <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
2219     URL</span> set at its creation.</span></p>
2220 wakaba 1.22
2221 wakaba 1.53 <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>
2222     attribute must return the <span>absolute URL</span> that the object
2223     represents.</span></p>
2224    
2225     <p class="no-ja-translation" data-ja-hash="f1f2216168ef764adc270dd0ce7cab68"><span class=en-original lang=en>The <code><a href=#workerlocation>WorkerLocation</a></code> interface also has the complement
2226     of <span>URL decomposition attributes</span>, <dfn id=dom-workerlocation-protocol title=dom-WorkerLocation-protocol><code>protocol</code></dfn>,
2227     <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>,
2228     <dfn id=dom-workerlocation-pathname title=dom-WorkerLocation-pathname><code>pathname</code></dfn>,
2229     <dfn id=dom-workerlocation-search title=dom-WorkerLocation-search><code>search</code></dfn>,
2230     and <dfn id=dom-workerlocation-hash title=dom-WorkerLocation-hash><code>hash</code></dfn>. These must
2231     follow the rules given for URL decomposition attributes, with the
2232     <span title=concept-uda-input>input</span> being the
2233     <span>absolute URL</span> that the object represents (same as the
2234     <code title=dom-WorkerLocation-href><a href=#dom-workerlocation-href>href</a></code> attribute), and
2235     the <span title=concept-uda-setter>common setter action</span>
2236     being a no-op, since the attributes are defined to be readonly. <a href=#refsHTML5>[HTML5]</a></span></p>
2237 wakaba 1.23
2238 wakaba 1.53
2239 wakaba 1.23
2240 wakaba 1.22
2241 wakaba 1.53 <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>
2242 wakaba 1.32
2243 wakaba 1.39 <p class="big-issue no-ja-translation" data-ja-hash="683a8b064076b13e2c36958afe8b9897"><span class=en-original lang=en>This section will be written in a future
2244 wakaba 1.53 draft.<!--XXX--></span></p>
2245    
2246    
2247     <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 -->
2248    
2249 wakaba 1.57 <p class="has-ja-translation" data-ja-hash="a17a0feb6f58a31040d51121e80bc233" data-ja-real-hash="f59286e011a68a30c6514aae2845f151"><span class=en-original lang=en>Thanks to
2250 wakaba 1.1
2251 wakaba 1.53 Aaron Boodman,
2252     &#1040;&#1083;&#1077;&#1082;&#1089;&#1077;&#1081; &#1055;&#1088;&#1086;&#1089;&#1082;&#1091;&#1088;&#1103;&#1082;&#1086;&#1074; (Alexey Proskuryakov),
2253     Anne van Kesteren,
2254     Ben Turner,
2255     Dmitry Titov,
2256 wakaba 1.57 Drew Wilson,
2257     Jeremy Orlow,
2258 wakaba 1.53 Jonas Sicking,
2259     Justin James,
2260     Kevin Hakanson,
2261     Maciej Stachowiak,
2262     Michael Nordman,
2263     Mike Smith,
2264 wakaba 1.1
2265 wakaba 1.53 and
2266    
2267     Philip Taylor
2268    
2269 wakaba 1.57 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>
2270 wakaba 1.53
2271     <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
2272     technology and whose experience has been a huge influence on this
2273     specification.</span><span class=ja-translation lang=ja>Gears チームの方々にも非常に感謝します。
2274 wakaba 1.14 Gears チームの方々はこの技術を開拓し、その経験はこの仕様書にも多大な影響を与えています。
2275 wakaba 1.53 </span></p>
2276    
2277    

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24