/[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.21 - (hide annotations) (download)
Fri Jul 25 19:12:07 2008 UTC (17 years, 11 months ago) by wakaba
Branch: MAIN
Changes since 1.20: +9 -3 lines
*** empty log message ***

1 wakaba 1.1
2     <html lang=en-US-x-hixie>
3     <head>
4     <title>Web Workers</title>
5     <link href="http://www.whatwg.org/style/specification" rel=stylesheet>
6     <!-- Japanese-translation-only style rules -->
7     <style>
8 wakaba 1.14 em, i {
9     font-style: normal;
10 wakaba 1.1 text-decoration: underline;
11     }
12 wakaba 1.14
13     .note, .warning {
14     font-style: normal;
15     }
16     p.note:before {
17     content: '注意: ';
18     }
19     p.warning:before {
20     content: '\26A0 警告! ';
21     }
22    
23 wakaba 1.1 ins.ja-note {
24     background-color: #EEFFFF;
25     color: black;
26     }
27 wakaba 1.16 span.ja-translation {
28     border-style: none !important;
29     }
30 wakaba 1.18
31     /* From Web Workers <style>, modified for Japanese texts */
32     p > span.ja-translation > span:not([title=""]):not([class="big-issue"]),
33     li > span.ja-translation > span:not([title=""]):not([class="big-issue"]) {
34     border-bottom: solid #99CC99;
35     }
36    
37 wakaba 1.1 </style>
38     <link href="http://www.whatwg.org/images/icon" rel=icon>
39    
40 wakaba 1.16 <style>
41     p > span:not([title=""]):not([class="big-issue"]), li > span:not([title=""]):not([class="big-issue"]) { border-bottom: solid #99CC99; }
42     </style>
43    
44 wakaba 1.1 <body class=draft>
45     <div class=head>
46     <p><span class=ja-translation lang=ja><a class=logo href="http://www.whatwg.org/" rel=home><img lang=en alt=WHATWG
47     src="http://www.whatwg.org/images/logo"></a></span></p>
48    
49     <h1 id=web-workers>Web Workers</h1>
50    
51     <h2 class="no-num no-toc" id=draft><span class=ja-translation lang=ja>勧告案<ins class=ja-note>の非公式和訳</ins> &mdash;
52 wakaba 1.13 <ins class=ja-note>(原文出版日)</ins> 2008年7月18日</span></h2>
53 wakaba 1.1
54     <p><span class=ja-translation lang=ja>みなさんにも作業にご参加いただけます。 <a
55     href="http://www.whatwg.org/mailing-list">作業部会の議論用メイリング・リストに参加してください。</a></span></p>
56    
57     <p><span class=ja-translation lang=ja><strong>Web デザイナー!</strong> みなさんのための <a
58     href="http://blog.whatwg.org/faq/" lang=en>FAQ</a>、<a
59     href="http://forums.whatwg.org/">掲示板</a>、<a
60     href="http://www.whatwg.org/mailing-list#help">ヘルプ用メイリング・リスト</a>があります!
61    
62     </span><p>
63    
64     <!-- Japanese-translation-only notes -->
65 wakaba 1.3 <ins class=ja-note style="display: block" lang=ja>
66 wakaba 1.1 <p>この文書は、 WHATWG HTML5 仕様書の日本語訳です。
67     HTML5 の正式な仕様書は英語版だけであり、
68     この日本語訳はあくまで参考としてご利用ください。
69    
70 wakaba 1.3 <p lang=en>This document is a Japanese translation of
71 wakaba 1.1 the WHATWG HTML5 specification. Note that the only normative specification
72     for the HTML5 is the original English version and this Japanese
73     translation is non‐normative.
74 wakaba 1.3
75     <p>日本語訳は <a href="edit/" rel=edit>Web 界面</a>を使って編集できます。
76     編集結果はおよそ3時間おきに反映されます。
77     また、原文の変更には毎日自動的に追随しています。
78    
79 wakaba 1.8 <p lang=en>The Japanese text can be edited using the <a href="edit/" rel=edit>Web
80 wakaba 1.3 interface</a>. Any modifications will be reflected to this translation
81     in about three hours. Note that any changes to the original specification
82     will automatically be incorporated to this translation every day.
83 wakaba 1.1 </ins>
84    
85     <p><span><!-- dummy --></span></p>
86    
87     <dl>
88     <dt><span class=ja-translation lang=ja><ins class=ja-note>原文の</ins>この版</span><dd><a
89 wakaba 1.13 href="http://www.whatwg.org/specs/web-workers/current-work/">http://whatwg.org/ww</a>
90 wakaba 1.1
91     <dt><span class=ja-translation lang=ja><ins class=ja-note>原文の</ins>改版履歴:</span><dd><span class=ja-translation lang=ja><span lang=en>Twitter</span> メッセージ (編集上の変更以外): <a
92 wakaba 1.20 href="http://twitter.com/WHATWG">http://twitter.com/WHATWG</a></span><dd><span class=ja-translation lang=ja>Commit-Watchers メイリング・リスト: <a
93     href="http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org">http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org</a></span><dd><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><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><dt><span class=ja-translation lang=ja>問題:</span><dd><span class=ja-translation lang=ja>フィードバックの送信先: <a
94 wakaba 1.1 href="http://www.whatwg.org/mailing-list">[email protected]</a></span><dd><span class=ja-translation lang=ja>フィードバックの閲覧・投票: <a
95     href="http://www.whatwg.org/issues/">http://www.whatwg.org/issues/</a></span><dt><span class=ja-translation lang=ja>編集者:</span><dd>Ian Hickson, Google, [email protected]
96     </dl>
97    
98     <p class=copyright>&copy; Copyright 2004-2008 Apple Computer, Inc.,
99     Mozilla Foundation, and Opera Software ASA.</p>
100    
101     <p class=copyright>You are granted a license to use, reproduce and create
102     derivative works of this document.</p>
103     </div>
104    
105     <hr>
106    
107     <h2 class="no-num no-toc" id=abstract><span class=ja-translation lang=ja>概要</span></h2>
108    
109 wakaba 1.14 <p><span class=ja-translation lang=ja>この仕様書は、 Web アプリケーションで、主たる頁とは並列に、
110     背景労働者スクリプトを走らせるための API を定義します。
111     これにより、メッセージ・パッシングによるスレッド的操作を協調機構として利用できるようになります。</span><h2 class="no-num no-toc" id=status><span class=ja-translation lang=ja>この文書の状態</span></h2>
112 wakaba 1.1
113     <p><span class=ja-translation lang=ja><strong>この文書は作業中です!</strong>
114     この文書は、コメントへの対応や通常の開発の過程として、
115     毎時毎分とは言い過ぎですが毎日のペースで変更されています。
116     コメントは非常に歓迎していますので、
117     <a href="mailto:[email protected]">[email protected]</a>
118     へお送りください。よろしくお願いします。</span><p><span class=ja-translation lang=ja>現在の焦点は、第1案の開発です。</span><p><span class=ja-translation lang=ja>実装者は、この仕様書が安定していないことに注意するべきです。
119     <strong>実装者は議論に参加しておかないと、
120     仕様がその実装とは非互換に変更されてしまうかもしれません。</strong>
121     この仕様書がいずれ実装呼び掛けの段階に達するのよりも前にこの仕様を実装したい販売者は、
122 wakaba 1.7 <a href="http://www.whatwg.org/mailing-list">WHATWG メイリング・リスト</a>に参加し、
123 wakaba 1.1 議論に加わるべきです。</span><p><span class=ja-translation lang=ja>この仕様書は <a
124     href="http://www.w3.org/html/wg">W3C HTML WG</a>
125     によっても出版されています。2つの仕様書の目次以降は同一です。</span><h2 class="no-num no-toc" id=contents><span class=ja-translation lang=ja>目次
126     </span></h2>
127     <!--begin-toc-->
128    
129     <ul class=toc>
130     <li><a href="#introduction"><span class=secno>1. </span>Introduction</a>
131     <ul class=toc>
132 wakaba 1.9 <li><a href="#tutorial"><span class=secno>1.1 </span>Tutorial</a>
133 wakaba 1.1
134 wakaba 1.16 <li><a href="#conformance"><span class=secno>1.2 </span>Conformance
135 wakaba 1.1 requirements</a>
136     <ul class=toc>
137 wakaba 1.16 <li><a href="#dependencies"><span class=secno>1.2.1
138 wakaba 1.1 </span>Dependencies</a>
139     </ul>
140    
141 wakaba 1.16 <li><a href="#terminology"><span class=secno>1.3 </span>Terminology</a>
142 wakaba 1.9 </ul>
143    
144 wakaba 1.13 <li><a href="#infrastructure"><span class=secno>2.
145     </span>Infrastructure</a>
146 wakaba 1.9 <ul class=toc>
147     <li><a href="#the-windowworker"><span class=secno>2.1 </span>The
148     <code>WindowWorker</code> interface</a>
149    
150 wakaba 1.16 <li><a href="#base-urls"><span class=secno>2.2 </span>Base URLs and
151     origins of workers</a>
152    
153     <li><a href="#the-queue"><span class=secno>2.3 </span>The queue of
154 wakaba 1.9 events</a>
155    
156 wakaba 1.16 <li><a href="#the-workers"><span class=secno>2.4 </span>The worker's
157 wakaba 1.11 ports</a>
158    
159 wakaba 1.16 <li><a href="#processing"><span class=secno>2.5 </span>Processing
160 wakaba 1.9 model</a>
161 wakaba 1.13
162 wakaba 1.16 <li><a href="#creating"><span class=secno>2.6 </span>Creating
163 wakaba 1.13 workers</a>
164 wakaba 1.9 </ul>
165    
166 wakaba 1.13 <li><a href="#apis-available"><span class=secno>3. </span>APIs available
167     to workers</a>
168 wakaba 1.1
169     <li class=no-num><a href="#references">References</a>
170    
171     <li class=no-num><a href="#acknowledgements">Acknowledgements</a>
172     </ul>
173     <!--end-toc-->
174    
175     <hr>
176    
177 wakaba 1.3 <h2 id=introduction><span class=ja-translation lang=ja><span class=secno>1. </span>はじめに</span></h2>
178 wakaba 1.1
179 wakaba 1.12 <h3 id=tutorial><span class=ja-translation lang=ja><span class=secno>1.1 </span>解説</span></h3>
180 wakaba 1.1
181 wakaba 1.9 <p><span class=ja-translation lang=ja><em>この節は規定の一部ではありません。</em></span><p class=big-issue>This section is missing.
182    
183 wakaba 1.16 <h3 id=conformance><span class=ja-translation lang=ja><span class=secno>1.2 </span>適合性要件</span></h3>
184 wakaba 1.1
185     <p><span class=ja-translation lang=ja>この仕様書のすべての図、例、注意書きは、
186     規定の一部ではないと明記された節すべてと同様に、
187     規定の一部ではありません。
188     この仕様書のそれ以外のすべては規定の一部です。</span><p><span class=ja-translation lang=ja>この文書の規定の部分にあるキーワード「<em class=rfc2119 title="MUST">しなければなりません</em>」、
189     「<em class=rfc2119 title="MUST NOT">してはなりません</em>」、
190     「<em class=rfc2119 title="REQUIRED">必須です</em>」、「<em class=rfc2119 title="SHOULD">するべきです</em>」、
191     「<em class=rfc2119 title="SHOULD NOT">するべきではありません</em>」、
192     「<em class=rfc2119 title="RECOMMENDED">推奨します</em>」、「<em class=rfc2119 title="MAY">して構いません</em>」、
193     「<em class=rfc2119 title="OPTIONAL">任意です</em>」は、 RFC 2119 で説明されているように解釈します。
194     可読性の観点から、この仕様書<ins class=ja-note>の原文</ins>では、
195     これらの語<ins class=ja-note>の原語</ins>はすべて大文字では表記しません。
196     <a href="#refsRFC2119">[RFC2119]</a></span></p>
197     <!-- XXX but they should be
198     marked up -->
199    
200     <p><span class=ja-translation lang=ja>算法の一部として<ins class=ja-note>動作の指示の形で (原文では</ins>命令形で<ins class=ja-note>) </ins>記述された要件
201     (例えば「先頭の間隔文字をすべて除去します」や「偽を返し、これらの段階を停止します」)
202     は、算法の紹介で使われたキーワード (<em class=rfc2119 title="MUST">しなければなりません</em>、
203     <em class=rfc2119 title="SHOULD">するべきです</em>、<em class=rfc2119 title="MAY">して構いません</em>など) の意味により解釈します。</span><p><span class=ja-translation lang=ja>いくつかの適合性要件は属性やメソッドやオブジェクトの要件として説明されています。
204     そのような要件は、利用者エージェントに関する要件として解釈します。</span><p><span class=ja-translation lang=ja>算法や特定の段階として説明されている適合性要件は、
205     最終的な結果が等価である限り、任意の方法で実装して<em class=rfc2119 title="MAY">構いません</em>。
206     (特に、この仕様書で定義されている算法は追うのを簡単にしており、
207     高性能であることを目指してはいません。)</span><p><span class=ja-translation lang=ja>この仕様書で定義される適合性の級は、利用者エージェントのみです。</span><p><span class=ja-translation lang=ja>利用者エージェントは、サービス拒否攻撃を防ぐため、
208     記憶容量を使い尽くすことを防ぐため、
209     あるいは環境特有の制限に対応するためなどの目的で、
210 wakaba 1.16 別段の制約のない入力に対して実装特有の制限を設けて<em class=rfc2119 title="MAY">構いません</em>。</span><h4 id=dependencies><span class=ja-translation lang=ja><span class=secno>1.2.1 </span>依存性</span></h4>
211 wakaba 1.1
212     <p><span class=ja-translation lang=ja>この仕様書は他のいくつかの下位仕様書に依存しています。</span><dl>
213     <dt>HTML5
214    
215     <dd>
216     <p><span class=ja-translation lang=ja>HTML5 の多くの基礎的な概念をこの仕様書で使用します。
217     <a href="#refsHTML5">[HTML5]</a></span></p>
218    
219     <dt>ECMAScript
220    
221     <dd>
222     <p><span class=ja-translation lang=ja>この仕様書はスクリプト言語として JavaScript
223     を使うことを想定しています。 <a href="#refsJS">[JS]</a></span></p>
224    
225     <dt>WebIDL
226    
227     <dd>
228 wakaba 1.21 <p><span class=ja-translation lang=ja>この仕様書の IDL ブロックは WebIDL 仕様書における意味を用います。 <a href="#refsWebIDL">[WebIDL]</a></span></p>
229 wakaba 1.1 </dl>
230    
231 wakaba 1.16 <h3 id=terminology><span class=ja-translation lang=ja><span class=secno>1.3 </span>用語</span></h3>
232 wakaba 1.1
233     <p><span class=ja-translation lang=ja>簡単のため、<em>示す</em>、<em>表示する</em>、
234     <em>可視</em>などの用語を文書が利用者に対してレンダリングされる方法に言及する時に使うことがあります。
235     これらの語は視覚媒体を暗示することを意図していません。
236 wakaba 1.10 これらの語は他の媒体にも等価な方法で適用されると考えなければ<em class=rfc2119 title="MUST">なりません</em>。</span><p><span class=ja-translation lang=ja>「<code title="">Foo</code> オブジェクト」という構文 (<code title="">Foo</code>
237     は実際には界面) を時々使いますが、より正確な「界面 <code title="">Foo</code>
238     を実装しているオブジェクト」の代わりに用いています。</span><p><span class=ja-translation lang=ja>DOM という語は、 Web アプリケーションでスクリプトに利用可能とされている API
239 wakaba 1.1 の集合を指して用い、必ずしも DOM 中核仕様書で定義されている実際の
240     <code>Document</code> オブジェクトその他の <code>Node</code>
241     オブジェクトの存在を暗示してはいません。<a
242     href="#refsDOM3CORE">[DOM3CORE]</a></span><p><span class=ja-translation lang=ja>DOM 属性は、その値が (例えば著者のスクリプトにより) 取り出される時<em>取得される</em>といい、
243     新しい値がその属性に割り当てられる時<em>設定される</em>といいます。</span><p><span class=ja-translation lang=ja>DOM オブジェクトが<dfn id=live>生きている</dfn>という場合、
244     そのオブジェクトを返す属性は常に同じオブジェクトを返さなければ<em class=rfc2119 title="MUST">ならない</em>
245     (毎回新しいオブジェクトを返すのではなく) 上に、
246     そのオブジェクトの属性やメソッドがそのオブジェクトの裏にある実際のデータのスナップ写真ではなく、
247 wakaba 1.21 データそのものに対して操作されなければ<em class=rfc2119 title="MUST">ならない</em>ことを意味します。
248    
249    
250    
251    
252    
253    
254     </span><h2 id=infrastructure><span class=ja-translation lang=ja><span class=secno>2. </span>基盤</span></h2>
255 wakaba 1.9
256 wakaba 1.10 <h3 id=the-windowworker><span class=ja-translation lang=ja><span class=secno>2.1 </span><code><a href="#windowworker">WindowWorker</a></code> 界面</span></h3>
257 wakaba 1.9
258     <pre
259     class=idl>[NoInterfaceObject] interface <dfn id=windowworker>WindowWorker</dfn> {
260 wakaba 1.13 readonly attribute DOMString <a href="#url" title=dom-WindowWorker-URL>URL</a>;
261     readonly attribute DOMString <a href="#name" title=dom-WindowWorker-name>name</a>;
262     readonly attribute boolean <a href="#closing" title=dom-WindowWorker-closing>closing</a>;
263 wakaba 1.16 boolean <a href="#import" title=dom-WindowWorker-import>import</a>(in DOMString url);
264 wakaba 1.13 void <a href="#close" title=dom-WindowWorker-close>close</a>();
265 wakaba 1.11
266     // event handler attributes
267 wakaba 1.16 attribute <span>EventListener</span> <a href="#onconnect" title=handler-WindowWorker-onconnect>onconnect</a>;
268 wakaba 1.13 attribute <span>EventListener</span> <a href="#onunload" title=handler-WindowWorker-onunload>onunload</a>;
269 wakaba 1.9 };</pre>
270    
271 wakaba 1.14 <p><span class=ja-translation lang=ja><dfn id=url title=dom-WindowWorker-URL><code>URL</code></dfn>
272     属性は、 <code><a
273     href="#windowworker">WindowWorker</a></code>
274     オブジェクトが「<a
275     href="#run-a">労働者を走らせる</a>」算法で作成された時に割り当てられた値を返さなければ<em class=rfc2119 title="MUST">なりません</em>。
276     その値は、労働者を初期化するために使用されたスクリプトの絶対 URL を表します。</span><p><span class=ja-translation lang=ja><dfn id=name title=dom-windowworker-name><code>name</code></dfn>
277     属性は、<code><a
278     href="#windowworker">WindowWorker</a></code> オブジェクトが「<a
279     href="#run-a">労働者を走らせる</a>」算法で作成された時に割り当てられた値を返さなければ<em class=rfc2119 title="MUST">なりません</em>。この値が空文字列でなければ、
280     その値は、 <code
281 wakaba 1.13 title=dom-WindowWorkerCreators-createNamedWorker><a
282 wakaba 1.14 href="#createnamedworker">createNamedWorker()</a></code>
283     メソッドを使って労働者への参照を得るために使うことができる名前を表します。</span><p>The <dfn id=closing
284 wakaba 1.13 title=dom-WindowWorker-closing><code>closing</code></dfn> attribute must
285 wakaba 1.16 return false until it is set to true by one of the algorithms in the
286     processing model section below.
287 wakaba 1.9
288 wakaba 1.12 <p><span class=ja-translation lang=ja>次に示すのは、 <code><a
289     href="#windowworker">WindowWorker</a></code>
290     界面を実装するオブジェクトが対応しなければ<em class=rfc2119 title="MUST">ならない</em>事象取扱器 DOM 属性です。</span><dl>
291 wakaba 1.16 <dt><dfn id=onconnect
292     title=handler-WindowWorker-onconnect><code>onconnect</code></dfn>
293 wakaba 1.11
294     <dd>
295 wakaba 1.16 <p><span class=ja-translation lang=ja><code title=event-WindowWorker-connect>connect</code> 事象が当該 <code><a href="#windowworker">WindowWorker</a></code> オブジェクトを対象としているか、泡立って当該オブジェクトを通過する時に、
296 wakaba 1.12 呼び出されなければなりません。</span><dt><dfn id=onunload
297 wakaba 1.13 title=handler-WindowWorker-onunload><code>onunload</code></dfn>
298 wakaba 1.11
299     <dd>
300 wakaba 1.12 <p><span class=ja-translation lang=ja><code title=event-unload>unload</code> 事象が当該 <code><a href="#windowworker">WindowWorker</a></code> オブジェクトを対象としているか、泡立って当該オブジェクトを通過する時に、
301     呼び出されなければなりません。</span></dl>
302 wakaba 1.11
303 wakaba 1.18 <h3 id=base-urls><span class=ja-translation lang=ja><span class=secno>2.2 </span>労働者の基底 URL と起源</span></h3>
304 wakaba 1.16
305 wakaba 1.18 <p><span class=ja-translation lang=ja>労働者中で API に渡された <span>URL</span> の<span>基底 URL</span>は、
306     労働者の <code><a href="#windowworker">WindowWorker</a></code>
307     オブジェクトの <code
308     title=dom-WindowWorker-URL><a href="#url">URL</a></code> 属性により与えられる<span>絶対 URL</span>
309     です。</span><p><span class=ja-translation lang=ja>労働者中で走っているスクリプトの<span>起源</span>と<span>実効スクリプト起源</span>は、
310     共に、労働者の <code><a href="#windowworker">WindowWorker</a></code>
311     オブジェクトの <code
312     title=dom-WindowWorker-URL><a href="#url">URL</a></code>
313     属性の値により与えられる<span>絶対 URL</span> の<span>起源</span>です。</span><h3 id=the-queue><span class=ja-translation lang=ja><span class=secno>2.3 </span>事象の待ち行列</span></h3>
314 wakaba 1.9
315 wakaba 1.10 <p><span class=ja-translation lang=ja>各 <code><a href="#windowworker">WindowWorker</a></code> オブジェクトは、
316 wakaba 1.12 <dfn id=queue>事象の待ち行列</dfn> (はじめは空) と関連付けられています。</span><p><span class=ja-translation lang=ja>待ち行列中の事象は、 DOM 事象か小休止呼び戻しのいずれかです。</span><p><span class=ja-translation lang=ja>労働者中で呼び出しまたは発送されるすべての非同期の呼び戻しと事象は、
317 wakaba 1.17 労働者の待ち行列に追加されなければなりません。
318 wakaba 1.12 ただし、実際の呼び戻しの呼び出しや事象の発送は、後述の「<a
319 wakaba 1.14 href="#run-a">労働者を走らせる</a>」処理モデルに従い処理されます。</span><p><span class=ja-translation lang=ja>一旦 <code><a href="#windowworker">WindowWorker</a></code> の <code
320     title=dom-windowworker-closing><a href="#closing">closing</a></code>
321     属性が真に設定されると、待ち行列は、以後追加されるべきものがあっても、
322     すべて捨てなければ<em class=rfc2119 title="MUST">なりません</em>。実効的には、一旦 <code
323     title=dom-windowworker-closing><a href="#closing">closing</a></code>
324     属性が真となると、タイマーが発火を停止したり、
325 wakaba 1.16 すべての未決の非同期処理に関する通知は捨てられたりするようになるなどします。</span><h3 id=the-workers><span class=ja-translation lang=ja><span class=secno>2.4 </span>労働者のポート</span></h3>
326 wakaba 1.11
327 wakaba 1.14 <p><span class=ja-translation lang=ja>労働者は、メッセージ通信路とその <code>MessagePort</code>
328 wakaba 1.12 オブジェクトを通じて、他の労働者や閲覧文脈と通信します。</span><p><span class=ja-translation lang=ja>各 <code><a href="#windowworker">WindowWorker</a></code> <var
329     title="">worker</var> は、<dfn id=the-workers0>労働者のポート</dfn>の並びを持ちます。
330     これは、他のポートと絡められており、かつ <code title=dom-MessagePort-ownerWindow>ownerWindow</code>
331     が <var
332     title="">worker</var> であるポートを1つ (だけ) 持つような <code>MessagePort</code>
333     オブジェクトすべてを含むものです。この並びは<a href="#queue">事象の待ち行列</a>中で未決の事象中にある
334 wakaba 1.16 <code>MessagePort</code> オブジェクトすべてを含みます。</span><hr>
335    
336 wakaba 1.18 <p><span class=ja-translation lang=ja>労働者は、<a href="#the-workers0">労働者のポート</a>の最低1つが、 <code
337     title=dom-MessagePort-ownerWindow>ownerWindow</code> が
338     <code>WindowBrowsingContext</code>
339     オブジェクトであるような、絡められた <code>MessagePort</code>
340     を持つ場合、<dfn id=front-line>前線労働者</dfn>であるといいます。</span><p><span class=ja-translation lang=ja>労働者は、次のいずれかの場合、<dfn id=needed>必要な労働者</dfn>であるといいます。</span><ul>
341     <li><span class=ja-translation lang=ja><a href="#front-line">前線労働者</a>である場合。</span><li><span class=ja-translation lang=ja><a href="#the-workers0">労働者のポート</a>の最低1つが、 <code
342     title=dom-MessagePort-ownerWindow>ownerWindow</code> が<a
343     href="#needed">必要な労働者</a>である <code><a
344     href="#windowworker">WindowWorker</a></code> オブジェクトであるような、
345     絡められた <code>MessagePort</code> を持つ場合。</span></ul>
346 wakaba 1.16
347     <hr>
348    
349 wakaba 1.18 <p><span class=ja-translation lang=ja>労働者は、<a href="#the-workers0">労働者のポート</a>の最低1つが、
350     その <code title=dom-MessagePort-active>active</code> 属性の値が真であり、
351     かつ <code
352     title=dom-MessagePort-ownerWindow>ownerWindow</code> が
353     <code>WindowBrowsingContext</code> オブジェクトであるような、
354     絡められた <code>MessagePort</code> を持つ場合、
355     <dfn id=active>活性前線労働者</dfn>であるといいます。</span><p><span class=ja-translation lang=ja>労働者は、次のいずれかの場合、<dfn id=active0>活性で必要な労働者</dfn>であるといいます。</span><ul>
356     <li><span class=ja-translation lang=ja><a href="#active">活性前線労働者</a>である場合。</span><li><span class=ja-translation lang=ja><a href="#the-workers0">労働者のポート</a>の最低1つが、 <code
357     title=dom-MessagePort-ownerWindow>ownerWindow</code> が<a
358     href="#active0">活性で必要な労働者</a>である <code><a
359     href="#windowworker">WindowWorker</a></code> オブジェクトであるような、
360     絡められた <code>MessagePort</code> を持つ場合。</span></ul>
361 wakaba 1.16
362     <h3 id=processing><span class=ja-translation lang=ja><span class=secno>2.5 </span>処理モデル</span></h3>
363 wakaba 1.12
364     <p><span class=ja-translation lang=ja>利用者エージェントが、<span>URL</span> <var
365     title="">url</var>、閲覧文脈 <var title="">owner browsing
366     context</var>、<code>Document</code> <var title="">owner
367     document</var> のスクリプトに対する、 <var
368 wakaba 1.14 title="">name</var> と名付けられた<dfn id=run-a>労働者を走らせる</dfn>、
369 wakaba 1.12 という時には、利用者エージェントは、次の段階を、完全に分離された並列実行環境で実行しなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
370     <li>
371     <p><span class=ja-translation lang=ja><var title="">url</var> で識別される資源を取って来ようと試みます。</span></p>
372    
373 wakaba 1.14 <p><span class=ja-translation lang=ja>この試みが失敗した場合、これらの段階を停止し、この段階を呼び出した算法が定義する<a
374     href="#worker" title="worker creation failed">誤り取扱段階</a>を呼び出します。</span></p>
375 wakaba 1.12
376     <p><span class=ja-translation lang=ja>この試みが成功した場合、 <var title="">script</var>
377     を得られた資源とします。</span></p>
378    
379     <p class=note><span class=ja-translation lang=ja><code>script</code> 要素と同様に、スクリプトの MIME 型は無視します。
380     <code>script</code> 要素とは異なり、
381     型を上書きする方法はありません。スクリプトは常に JavaScript
382     と仮定します。</span></p>
383 wakaba 1.11 <!-- XXX people will complain about
384     this. I guess we might want to examine the MIME type... -->
385    
386    
387     <li>
388 wakaba 1.18 <p><span class=ja-translation lang=ja>新しい <code><a href="#windowworker">WindowWorker</a></code>
389     オブジェクト <var title="">worker</var> を作成します。</span></p>
390 wakaba 1.9
391     <li>
392 wakaba 1.18 <p><span class=ja-translation lang=ja><var title="">worker</var> の
393     <code title=dom-WindowWorker-URL><a href="#url">URL</a></code>
394     属性を <var
395     title="">url</var> の値に設定します。</span></p>
396 wakaba 1.13
397     <li>
398 wakaba 1.18 <p><span class=ja-translation lang=ja><var title="">worker</var> の <code title=dom-WindowWorker-name><a
399     href="#name">name</a></code>
400     属性を <var title="">name</var> の値に設定します。</span></p>
401 wakaba 1.9
402     <li>
403 wakaba 1.18 <p><span class=ja-translation lang=ja><var title="">script</var> のスクリプト実行文脈を (ひいては大域オブジェクトをも)
404     <var
405     title="">worker</var> とします。</span></p>
406 wakaba 1.9
407     <li>
408 wakaba 1.12 <p><span class=ja-translation lang=ja><var title="">script</var> のスクリプト閲覧文脈を <var title="">owner browsing context</var>
409     とします。</span></p>
410 wakaba 1.9
411     <li>
412 wakaba 1.12 <p><span class=ja-translation lang=ja><var title="">script</var> のスクリプト文書文脈を <var title="">owner document</var>
413     とします。</span></p>
414 wakaba 1.9
415     <li>
416 wakaba 1.18 <p><span class=ja-translation lang=ja>この段階を呼び出す算法が定義する<a href="#success" title="worker creation
417     succeeded">成功段階</a>を呼び出します。</span></p>
418    
419     <p class=note><span class=ja-translation lang=ja>これは、通常、事象を1つ<a
420     href="#queue">事象の待ち行列</a>に追加します。その場合、
421     追加される事象は <code>MessagePort</code> を持つはずなので、<a
422     href="#the-workers0">労働者のポート</a>の並びは空にならないことになります。
423     そうでない場合には、次の段階が <var title="">worker</var>
424     オブジェクトの <code title=dom-WindowWorker-closing><a
425     href="#closing">closing</a></code> 属性を真に設定することとなります。</span></p>
426    
427     <li>
428     <p><span class=ja-translation lang=ja><var title="">worker</var> の監視を開始し、
429     労働者が<a href="#needed">必要な労働者</a>ではなくなると即座に
430     <var title="">worker</var> オブジェクトの <code
431     title=dom-WindowWorker-closing><a href="#closing">closing</a></code>
432     属性が真に設定されるようにします。</span></p>
433 wakaba 1.13
434     <li>
435 wakaba 1.18 <p><span class=ja-translation lang=ja><var title="">worker</var> の監視を開始し、
436     <var title="">worker</var> オブジェクトの <code
437 wakaba 1.13 title=dom-WindowWorker-closing><a href="#closing">closing</a></code>
438 wakaba 1.18 属性が偽であって、かつ労働者が<a href="#active0">活性で必要な労働者</a>ではないという時に、 <code
439 wakaba 1.13 title=dom-WindowWorker-closing><a href="#closing">closing</a></code>
440 wakaba 1.18 属性が真に切り替わるまで、
441     または労働者が<a
442     href="#active0">活性で必要な労働者</a>となるまでのいずれかの間、
443     利用者エージェントがスクリプトを一時停止するようにします。</span></p>
444 wakaba 1.11
445     <li>
446 wakaba 1.14 <p><span class=ja-translation lang=ja><var title="">script</var> を、返るか、例外の捕獲に失敗するか、後述の「<a href="#kill-a">労働者を殺す</a>」算法により早々に停止させられるかのいずれかまで走らせます。</span></p>
447 wakaba 1.11
448 wakaba 1.14 <p class=note><span class=ja-translation lang=ja>スクリプトが「<a href="#kill-a">労働者を殺す</a>」算法で停止させられる場合には、
449     その同じ算法が、次の段階で、<a href="#queue">事象の待ち行列</a>には唯一
450     <code title=message-unload>unload</code> 事象だけが含まれるようにします。
451     しかし、この事象が無視された場合には、これは、ポートがごみ収集される際に真となります。</span></p>
452 wakaba 1.9
453     <li>
454 wakaba 1.18 <p><span class=ja-translation lang=ja><i>事象ループ</i>: <var
455     title="">worker</var> に関連付けられた<a
456     href="#queue">事象の待ち行列</a>に事象が存在するようになるか、または
457     <var title="">worker</var> オブジェクトの <code
458 wakaba 1.13 title=dom-WindowWorker-closing><a href="#closing">closing</a></code>
459 wakaba 1.18 属性が真に設定されるまで待ちます。</span></p>
460 wakaba 1.9
461     <li>
462 wakaba 1.14 <p><span class=ja-translation lang=ja><a href="#queue">事象の待ち行列</a>中で最古の事象か呼び戻しがあれば、
463     これを発送します。この事象の取扱いや呼び戻しの実行は、後述の「<a href="#kill-a">労働者を殺す</a>」
464     算法により、早々に停止させられるかもしれません。</span></p>
465 wakaba 1.9
466     <li>
467 wakaba 1.18 <p><span class=ja-translation lang=ja><a href="#queue">事象の待ち行列</a>中に更に事象が存在する場合、
468     または <var title="">worker</var> オブジェクトの <code
469 wakaba 1.13 title=dom-WindowWorker-closing><a href="#closing">closing</a></code>
470 wakaba 1.18 属性が偽に設定されている場合、前述の<i>事象ループ</i>との名札のある段階に飛んで戻ります。</span></p>
471 wakaba 1.9
472     <li>
473 wakaba 1.14 <p class=big-issue><span class=ja-translation lang=ja>タイマー、休憩、 XMLHttpRequest、データベース取引、その他を殺さなければ<em class=rfc2119 title="MUST">なりません</em>。
474     ポートを非活性化し、ほどかなければ<em class=rfc2119 title="MUST">なりません</em> (unload を送りません)。</span></p>
475 wakaba 1.9 </ol>
476    
477     <hr>
478    
479 wakaba 1.14 <p><span class=ja-translation lang=ja>利用者エージェントが<dfn id=kill-a>労働者を殺す</dfn>という時には、
480     利用者エージェントは、次の段階を労働者の主たるループ (先に定義した「<a
481     href="#run-a">労働者を走らせる</a>」処理モデル) と並列に走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
482     <li>
483     <p><span class=ja-translation lang=ja>事象名が <code
484     title=event-unload>unload</code> であり、
485     泡立たず、取消可能ではない
486     <code>Event</code> オブジェクトを作成し、労働者の <code><a
487     href="#windowworker">WindowWorker</a></code>
488     オブジェクトの<a
489     href="#queue">事象の待ち行列</a>に追加し、 <code><a
490     href="#windowworker">WindowWorker</a></code>
491     オブジェクト自体を対象とします。</span><li>
492     <p><span class=ja-translation lang=ja>労働者の <code><a href="#windowworker">WindowWorker</a></code>
493     オブジェクトの
494     <code title=dom-WindowWorker-closing><a
495     href="#closing">closing</a></code>
496     属性を真に設定します。</span><li>
497     <p><span class=ja-translation lang=ja>利用者エージェント定義の時間、待ちます。先に定義した「<a href="#run-a">労働者を走らせる</a>」
498     処理モデルが <code title=event-unload>unload</code>
499     事象に登録された事象聴取器を即座に走らせ始める場合には、この時間は零である<em class=rfc2119 title="SHOULD NOT">べきではありません</em>。
500     というのは、予期せず停止させる時に浄化するために <code
501     title=event-unload>unload</code> 事象を使えるようにするのが目的だからです。</span><li>
502     <p><span class=ja-translation lang=ja><a href="#queue">事象の待ち行列</a>中にこの算法が追加した
503     <code title=event-unload>unload</code>
504     事象以外の事象が存在する場合には、それらを発送せずに捨てます。</span><li>
505     <p><span class=ja-translation lang=ja>この算法が追加した <code title=event-unload>unload</code>
506     事象がまだ発送されていなければ、現在労働者中で走っているスクリプトを停止します。</span><li>
507     <p><span class=ja-translation lang=ja>利用者エージェント定義の時間、待ちます。</span><li>
508     <p><span class=ja-translation lang=ja>現在労働者中で走っているスクリプト (スクリプトが走っているとすると、
509     これは <code
510     title=event-unload>unload</code>
511     事象の取扱器です。) を停止します。</span></ol>
512 wakaba 1.9
513 wakaba 1.19 <p><span class=ja-translation lang=ja>利用者エージェントは、いつであっても、例えば利用者の要求に応じて、 CPU
514     割当管理に応じて、あるいは労働者がその <code title=dom-WindowWorker-closing><a
515     href="#closing">closing</a></code> 属性が真に設定された後であっても実行し続けている場合で労働者が<a href="#needed">必要な労働者</a>ではなくなった時などに、
516     「<a href="#kill-a">労働者を殺す</a>」処理モデルを呼び出して<em class=rfc2119 title="MAY">構いません</em>。</span><hr>
517    
518     <p><span class=ja-translation lang=ja>利用者エージェントは、スクリプトが <code><a
519     href="#windowworker">WindowWorker</a></code>
520     オブジェクトの <dfn id=import
521 wakaba 1.16 title=dom-WindowWorker-import><code>import(<var
522 wakaba 1.19 title="">url</var>)</code></dfn> メソッドを呼び出した時、
523     次の段階を走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
524 wakaba 1.16 <li>
525 wakaba 1.19 <p><span class=ja-translation lang=ja><var title="">url</var> 引数を<span title="resolve a url">解決</span>します。</span><li>
526 wakaba 1.16 <p><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
527     例外を投げます。</span><li>
528     <p><span class=ja-translation lang=ja>得られた絶対 URL の起源がメソッドを呼び出したスクリプトの起源と<span title="same origin">同じ</span>でない場合、
529     保安性例外を投げます。</span><li>
530 wakaba 1.19 <p><span class=ja-translation lang=ja>得られた<span>絶対 URL</span> で識別される資源を<span>取って来</span><!-- XXX -->ようとします。</span></p>
531 wakaba 1.16
532 wakaba 1.19 <p><span class=ja-translation lang=ja>この試みが失敗した場合、偽を返し、これらの段階を停止します。</span></p>
533 wakaba 1.16
534     <p><span class=ja-translation lang=ja>この試みが成功した場合、 <var title="">script</var>
535     を得られた資源とします。</span></p>
536    
537 wakaba 1.19 <p class=note><span class=ja-translation lang=ja>はじめのスクリプトと同様に、ここでのスクリプトも、 MIME 型に関わらず常に JavaScript
538     であると仮定します。</span></p>
539 wakaba 1.16 <!-- XXX -->
540    
541     <li>
542 wakaba 1.19 <p><span class=ja-translation lang=ja><var title="">script</var> の<span>スクリプト実行文脈</span>、
543     <span>スクリプト閲覧文脈</span>、<span>スクリプト文書文脈</span>を、
544     この労働者についての<a href="#run-a">労働者を走らせる</a>処理モデルで実行されたスクリプトについてのものと同じとします。</span></p>
545 wakaba 1.16
546     <li>
547     <p><span class=ja-translation lang=ja><var title="">script</var> を、返るか、例外の捕獲に失敗するか、後述の「<a href="#kill-a">労働者を殺す</a>」算法により早々に停止させられるかのいずれかまで走らせます。</span></p>
548    
549 wakaba 1.19 <p><span class=ja-translation lang=ja>実行が投げた場合やスクリプトが早々に停止された場合、これらの段階を停止し、
550     例外や停止を <code
551     title=dom-WindowWorker-import><a href="#import">import()</a></code>
552     メソッドを呼んだスクリプトに処理させ続けます。</span></p>
553 wakaba 1.16
554 wakaba 1.19 <p><span class=ja-translation lang=ja>そうでない場合、真を返します。</span></p>
555 wakaba 1.16 </ol>
556    
557 wakaba 1.11 <hr>
558    
559 wakaba 1.14 <p><span class=ja-translation lang=ja>スクリプトが <code><a href="#windowworker">WindowWorker</a></code>
560     オブジェクトで <dfn id=close
561     title=dom-WindowWorker-close><code>close()</code></dfn>
562 wakaba 1.15 メソッドを呼び出した場合、利用者エージェントは、次の段階を走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
563 wakaba 1.11 <li>
564 wakaba 1.15 <p><span class=ja-translation lang=ja>事象名が <code
565     title=event-unload>unload</code> であり、
566     泡立たず、取消可能ではない
567     <code>Event</code> オブジェクトを作成し、 <code><a
568     href="#windowworker">WindowWorker</a></code>
569     オブジェクトの<a
570     href="#queue">事象の待ち行列</a>に追加し、 <code><a
571     href="#windowworker">WindowWorker</a></code>
572     オブジェクト自体を対象とします。</span><li>
573 wakaba 1.14 <p><span class=ja-translation lang=ja>労働者の <code><a href="#windowworker">WindowWorker</a></code>
574     オブジェクトの
575     <code title=dom-WindowWorker-closing><a
576     href="#closing">closing</a></code>
577     属性を真に設定します。</span><li>
578 wakaba 1.15 <p><span class=ja-translation lang=ja>他のポートと絡められており、かつ <code
579     title=dom-MessagePort-ownerWindow>ownerWindow</code>
580     がメソッドの呼び出された <code><a
581     href="#windowworker">WindowWorker</a></code> オブジェクトであるポートを1つ
582     (だけ) 持つような <code>MessagePort</code> について、それぞれ次の部分段階を走らせます。</span></p>
583 wakaba 1.11
584     <ol>
585     <li>
586 wakaba 1.15 <p><span class=ja-translation lang=ja>2つのポートをほどきます。</span><li>
587     <p><span class=ja-translation lang=ja>両ポートの <code title=dom-MessagePort-active>active</code>
588     属性を偽に設定します。</span><li>
589     <p><span class=ja-translation lang=ja>次の利用可能な機会、何らかのスクリプトが実行し終えた後に、
590     他方のポート (<code title=dom-MessagePort-ownerWindow>ownerWindow</code>
591     が <code title=dom-WindowWorker-close><a
592     href="#close">close()</a></code>
593     メソッドが呼ばれた <code><a href="#windowworker">WindowWorker</a></code>
594     オブジェクトではない方) で <code title=event-unload>unload</code>
595     と呼ばれる単純事象を発火します。</span></ol>
596 wakaba 1.11 </ol>
597    
598 wakaba 1.16 <h3 id=creating><span class=ja-translation lang=ja><span class=secno>2.6 </span>労働者の作成</span></h3>
599 wakaba 1.9
600     <pre
601     class=idl>[NoInterfaceObject] interface <dfn id=windowworkercreators>WindowWorkerCreators</dfn> {
602 wakaba 1.13 <span>MessagePort</span> <a href="#createworker" title=dom-WindowWorkerCreators-createWorker>createWorker</a>(in DOMString scriptURL);
603     <span>MessagePort</span> <a href="#createnamedworker" title=dom-WindowWorkerCreators-createNamedWorker>createNamedWorker</a>(in DOMString name, in DOMString scriptURL);
604 wakaba 1.9 };</pre>
605    
606 wakaba 1.15 <p><span class=ja-translation lang=ja><code>Window</code> 界面を実装するオブジェクトは、 <code><a href="#windowworkercreators">WindowWorkerCreators</a></code> 界面も実装しなければ<em class=rfc2119 title="MUST">なりません</em>。</span><hr>
607 wakaba 1.13
608 wakaba 1.15 <p><span class=ja-translation lang=ja>利用者エージェントは、 <dfn id=createworker title=dom-WindowWorkerCreators-createWorker><code>createWorker(<var title="">scriptURL</var>)</code></dfn> メソッドが呼び出された時、
609     次の段階を走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
610 wakaba 1.13 <li>
611 wakaba 1.15 <p><span class=ja-translation lang=ja><var
612     title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span><li>
613     <p><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
614     例外を投げます。</span><li>
615     <p><span class=ja-translation lang=ja>得られた絶対 URL の起源がメソッドを呼び出したスクリプトの起源と<span title="same origin">同じ</span>でない場合、
616     保安性例外を投げます。</span><li>
617     <p><span class=ja-translation lang=ja>得られた絶対 URL から、名前が空文字列である<a href="#create">労働者を作成</a>します。</span><li>
618     <p><span class=ja-translation lang=ja><a
619     href="#create">労働者を作成</a>する算法が返した
620     <code>MessagePort</code> オブジェクトを返します。</span></ol>
621 wakaba 1.11
622     <hr>
623    
624 wakaba 1.15 <p><span class=ja-translation lang=ja>利用者エージェントは、 <dfn id=createnamedworker title=dom-WindowWorkerCreators-createNamedWorker><code>createNamedWorker(<var title="">name</var>, <var title="">scriptURL</var>)</code></dfn> メソッドが呼び出された時、
625     次の段階を走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
626 wakaba 1.13 <li>
627 wakaba 1.15 <p><span class=ja-translation lang=ja><var
628     title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span><li>
629     <p><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
630     例外を投げます。</span><li>
631     <p><span class=ja-translation lang=ja>得られた絶対 URL の起源がメソッドを呼び出したスクリプトの起源と<span title="same origin">同じ</span>でない場合、
632     保安性例外を投げます。</span><li>
633     <p><span class=ja-translation lang=ja><var title="">name</var> 引数が空文字列の場合、得られた絶対 URL から、
634     名前が空文字列である<a
635     href="#create">労働者を作成</a>し、<a
636     href="#create">労働者を作成</a>する算法が返した <code>MessagePort</code>
637     オブジェクトを返します。そして、これらの段階を停止します。</span><li>
638     <p><span class=ja-translation lang=ja><code title=dom-WindowWorker-closing><a
639     href="#closing">closing</a></code> 属性が偽で、 <code
640     title=dom-WindowWorker-name><a href="#name">name</a></code>
641     属性が <var title="">name</var> 引数と全く等しく、 <code
642     title=dom-WindowWorker-URL><a href="#url">URL</a></code>
643     属性が得られた絶対 URL と同じ起源を持つ労働者が存在する場合、
644     次の部分段階を走らせます。</span></p>
645 wakaba 1.13
646     <ol>
647     <li>
648 wakaba 1.15 <p><span class=ja-translation lang=ja>当該労働者の <code title=dom-WindowWorker-URL><a
649     href="#url">URL</a></code>
650     属性が得られた絶対 URL と全く等しくはない場合、 <code>URL_MISMATCH_ERR</code>
651     例外を投げ、これらの段階を停止します。 <span
652     class=big-issue>code 19</span></span><li>
653     <p><span class=ja-translation lang=ja>メソッドを呼び出したスクリプトのスクリプト実行文脈が所有する新しい <code>MessagePort</code>
654     オブジェクトを作成します。</span><li>
655     <p><span class=ja-translation lang=ja>そのポートを返します。</span><li>
656 wakaba 1.19 <p><span class=ja-translation lang=ja>非同期に、この既存の労働者を新しく作成されたポートに<a href="#connect" title="connect to a
657     worker">接続</a>します。</span></ol>
658 wakaba 1.15
659     <p><span class=ja-translation lang=ja>そうでない場合、得られた絶対 URL から、名前が <var
660     title="">name</var> 引数の値である<a href="#create">労働者を作成</a>し、
661     <a href="#create">労働者を作成</a>する算法が返した <code>MessagePort</code>
662     オブジェクトを返します。</span></p>
663 wakaba 1.11 </ol>
664    
665     <hr>
666    
667 wakaba 1.15 <p><span class=ja-translation lang=ja>メソッド呼び出しの文脈において、 URL <var title="">url</var> から名前 <var
668     title="">name</var> の<dfn id=create>労働者を作成</dfn>する段階は、次の通りです。</span><ol>
669     <li>
670     <p><span class=ja-translation lang=ja>メソッドを呼び出したスクリプトのスクリプト実行文脈が所有する新しい <code>MessagePort</code>
671     オブジェクトを作成します。</span><li>
672     <p><span class=ja-translation lang=ja>そのポートを返します。</span><li>
673     <p><span class=ja-translation lang=ja>並列実行文脈において (つまり、別のスレッドやプロセスや同様の構造において)、 <var title="">owner browsing
674     context</var> をメソッドを呼び出したスクリプトのスクリプト閲覧文脈、 <var title="">owner
675     document</var> をメソッドを呼び出したスクリプトのスクリプト文書文脈として、
676     URL
677     <var
678     title="">url</var> のスクリプトのための <var
679     title="">name</var> という名前の<a href="#run-a">労働者を走らせます</a>。</span></p>
680    
681 wakaba 1.19 <p><span class=ja-translation lang=ja>その算法が<dfn id=success title="worker
682     creation succeeded">成功段階</dfn>の段階を呼び出す場合は、
683     この新しい労働者に、新しく作成されたポートと共に<a href="#connect"
684     title="connect to a worker">接続</a>します。</span></p>
685 wakaba 1.15
686     <p><span class=ja-translation lang=ja>そうでない場合、<dfn id=worker>労働者作成が失敗</dfn>した場合、次の利用可能な機会、
687     何らかのスクリプトが実行し終えた後に、新しく作成されたポートで
688     <code title=event-error>error</code>
689     と呼ばれる単純事象を発火します。</span></p>
690 wakaba 1.11 </ol>
691    
692     <hr>
693    
694 wakaba 1.19 <p><span class=ja-translation lang=ja>与えられた <code>MessagePort</code> オブジェクト <var title="">port</var>
695     により<dfn id=connect>労働者に接続</dfn>する段階は、次の通りです。</span><ol>
696 wakaba 1.13 <li>
697 wakaba 1.15 <p><span class=ja-translation lang=ja><var title="">port</var> がごみ収集されている場合、あるいは <var
698     title="">port</var> の <code
699     title=dom-MessagePort-ownerWindow>ownerWindow</code> の活性文書が既に
700     <var title="">port</var> が作成された時と同じ <code>Document</code>
701     オブジェクトでない場合には、何もしません。これらの段階を停止します。
702     労働者が丁度作成されたばかりの場合には、これはすぐに殺されることになります。</span></p>
703 wakaba 1.13
704     <li>
705 wakaba 1.15 <p><span class=ja-translation lang=ja>労働者の <code><a href="#windowworker">WindowWorker</a></code>
706 wakaba 1.19 が所有する<span>新しい <code>MessagePort</code>
707     オブジェクトを作成</span>します。</span><li>
708 wakaba 1.15 <p><span class=ja-translation lang=ja>この新しく作成されたポートとこれらの段階に渡されたポート <var
709     title="">port</var> を絡めます。</span><li>
710     <p><span class=ja-translation lang=ja>両ポートの
711     <code title=dom-MessagePort-active>active</code>
712     属性を真に設定します。</span><li>
713     <p><span class=ja-translation lang=ja>次の利用可能な機会、何らかのスクリプトが実行し終えた後に、
714     <var title="">port</var> において <code title=event-load>load</code>
715     と呼ばれる単純事象を発火します。</span><li>
716 wakaba 1.19 <p><span class=ja-translation lang=ja><code>MessageEvent</code> 界面を使った、名前 <code title=event-connect>connect</code>
717     の泡立たず、取消し可能で、既定作用を持たず、 <code
718     title=dom-MessageEvent-data>data</code> 属性の値が空文字列で、 <code
719     title=dom-MessageEvent-messagePort>messagePort</code> 属性の値が新たに作成されたポートである事象を作成し、
720     これを労働者の <code><a
721     href="#windowworker">WindowWorker</a></code> オブジェクトの<a
722     href="#queue">事象の待ち行列</a>に、 <code><a
723     href="#windowworker">WindowWorker</a></code>
724     オブジェクト自体を対象として追加します。</span></ol>
725 wakaba 1.15
726     <h2 id=apis-available><span class=ja-translation lang=ja><span class=secno>3. </span>労働者が利用可能な API</span></h2>
727    
728 wakaba 1.19 <p><span class=ja-translation lang=ja><span>スクリプト実行文脈</span>が <code><a href="#windowworker">WindowWorker</a></code>
729     オブジェクトであるスクリプトの大域範囲には、次のものを除き、
730     界面オブジェクトや構築器を利用可能としては<em class=rfc2119 title="MUST">なりません</em>。</span><ul>
731     <li>
732     <p><span class=ja-translation lang=ja>XMLHttpRequest 仕様書で定義されている
733     <code>XMLHttpRequest</code> とすべての界面オブジェクトと構築器、
734     ただし<span>文書応答実体本体</span>は常に null でなければ<em class=rfc2119 title="MUST">なりません</em>。 <a
735     href="#refsXHR">[XHR]</a></span><li>
736     <p><span class=ja-translation lang=ja><code>WebSocket</code> 界面オブジェクトと構築器</span><li>
737     <p><span class=ja-translation lang=ja><code>MessageChannel</code> 界面オブジェクトと構築器</span></ul>
738 wakaba 1.16
739     <hr>
740    
741 wakaba 1.15 <p><span class=ja-translation lang=ja><code><a
742     href="#windowworker">WindowWorker</a></code> 事象を実装するオブジェクトは、
743     次の界面も実装しなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ul>
744 wakaba 1.13 <li>
745 wakaba 1.15 <p><span class=ja-translation lang=ja><code>Window</code> 界面と、この界面を実装するオブジェクトが実装することを<em class=rfc2119 title="REQUIRED">要求</em>されている界面。
746     これには、次の界面が含まれます。</span></p>
747 wakaba 1.13
748     <ul>
749 wakaba 1.15 <li><span class=ja-translation lang=ja><code>WindowTimers</code> 界面</span><li><span class=ja-translation lang=ja><code><a href="#windowworkercreators">WindowWorkerCreators</a></code> 界面</span></ul>
750 wakaba 1.13
751 wakaba 1.15 <li><span class=ja-translation lang=ja><code>EventTarget</code> 界面。
752     </span></ul>
753 wakaba 1.9
754 wakaba 1.16 <div class=note>
755 wakaba 1.19 <p><span class=ja-translation lang=ja>次の API は、 <code>Window</code> オブジェクトに定義されているか、
756     その界面を実装しているオブジェクトが実装することが要求<!-- lowercase required,
757     since this paragraph is non-normative -->されている界面の1つで定義されているので、
758     労働者に利用可能です。</span></p>
759 wakaba 1.16
760     <ul>
761 wakaba 1.19 <li><span class=ja-translation lang=ja><code title=dom-showNotification>showNotification()</code> API。</span><li><span class=ja-translation lang=ja><code title=dom-localStorage>localStorage</code> オブジェクトと、
762     関連する名前・値組蓄積庫 API。</span><li><span class=ja-translation lang=ja><code title=dom-openDatabase>openDatabase()</code> メソッドと関連する
763     SQL データベース API。</span></ul>
764 wakaba 1.16 </div>
765    
766     <p class=big-issue>Need to define a sync database API.
767    
768     <p class=big-issue>May need to define a browser sniffing API (like
769     window.navigator).</p>
770     <!-- XXX ApplicationCache -->
771     <!-- XXX a way to set cookies on the URL for the script -->
772     <!-- XXX debugging: void log(in DOMString s); // log to console -->
773     <!-- XXX debugging: onerror -->
774    
775     <hr>
776    
777 wakaba 1.19 <p><span class=ja-translation lang=ja>DOM API (<code>Node</code> オブジェクト、 <code>Document</code>
778     オブジェクト、その他) は、この版のこの仕様書では労働者に利用可能ではありません。</span><h2 class=no-num id=references><span class=ja-translation lang=ja>参考文献</span></h2>
779 wakaba 1.1
780     <p class=big-issue><span class=ja-translation lang=ja>この章は将来の仕様案で執筆します。</span><h2 class=no-num id=acknowledgements><span class=ja-translation lang=ja>謝辞</span></h2>
781     <!-- ACKS -->
782    
783 wakaba 1.18 <p><span class=ja-translation lang=ja>Maciej Stachowiak, Mike Smith, Philip Taylor の有用かつ重要なコメントに感謝します。</span><p><span class=ja-translation lang=ja>Gears チームの方々にも非常に感謝します。
784 wakaba 1.14 Gears チームの方々はこの技術を開拓し、その経験はこの仕様書にも多大な影響を与えています。
785     </span>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24