| 1 |
wakaba |
1.88 |
<!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 |
|
|
<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 |
|
|
<script src=ja-script defer async></script><link href=http://www.whatwg.org/images/icon rel=icon><body class=draft> |
| 6 |
|
|
<div class=head> |
| 7 |
|
|
<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 |
|
|
<h1 class="no-ja-translation" data-ja-hash="6cb7eb9696d986359fa3a78c4b8e60dc"><span class=en-original lang=en>Web Workers</span></h1> |
| 10 |
wakaba |
1.89 |
<h2 class="no-num no-toc has-ja-translation" data-ja-hash="8a7847394b9b718bd84c2d29d478640c" data-ja-real-hash="cadafb72df087a06880c856fec400d62" id=draft-recommendation-—-date:-01-jan-1901><span class=en-original lang=en>Draft Recommendation — 11 May 2009</span><span class=ja-translation lang=ja>勧告案<ins class=ja-note>の非公式和訳</ins> — |
| 11 |
|
|
<ins class=ja-note>(原文出版日)</ins> 11 May 2009</span></h2> |
| 12 |
wakaba |
1.88 |
<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 |
|
|
href=http://blog.whatwg.org/faq/ lang=en>FAQ</a>、<a |
| 16 |
|
|
href=http://forums.whatwg.org/>掲示板</a>、<a |
| 17 |
|
|
href=http://www.whatwg.org/mailing-list#help>ヘルプ用メイリング・リスト</a>があります! |
| 18 |
|
|
|
| 19 |
|
|
</span><p> |
| 20 |
|
|
|
| 21 |
|
|
<!-- Japanese-translation-only notes --> |
| 22 |
|
|
<ins class="ja-note cover-ja-note" lang=ja> |
| 23 |
|
|
<p>この文書は、 WHATWG 仕様書の日本語訳です。 正式な仕様書は英語版だけであり、この日本語訳はあくまで参考としてご利用ください。 |
| 24 |
|
|
|
| 25 |
|
|
<p lang=en>This document is a non-normative Japanese translation of the WHATWG specification. Only the original English version is normative and this Japanese translation is non‐normative. |
| 26 |
|
|
|
| 27 |
|
|
<p>日本語訳は段落をダブルクリックすると編集できます。<a href="http://suika.fam.cx/~wakaba/pbin/accounts/add">アカウントを作成</a>して <code>spec-ja</code> グループに参加してください。編集結果はおよそ3時間おきに反映されます。また、原文の変更には毎日自動的に追随しています。 (<a href=notes>詳細</a>) |
| 28 |
|
|
|
| 29 |
|
|
<p lang=en>You can edit Japanese text by double-clicking the paragraph you'd like to edit. <a href="http://suika.fam.cx/~wakaba/pbin/accounts/add">Create an account</a> and join the <code>spec-ja</code> group. Any additions of and modifications to Japanese text will be applied to the document within about three hours. Any changes to the original English specification will automatically be incorporated to the document every day. (<a href=notes>Details</a>) |
| 30 |
|
|
|
| 31 |
|
|
<p><a href="http://wiki.whatwg.org/wiki/Translations">他の翻訳のリスト</a>もご覧ください。 |
| 32 |
|
|
|
| 33 |
|
|
<p lang=en>See also the list of <a href="http://wiki.whatwg.org/wiki/Translations">translations</a>. |
| 34 |
|
|
|
| 35 |
|
|
<p><button type=button onclick=" |
| 36 |
|
|
document.getElementById ('style-only-ja').disabled = false; |
| 37 |
|
|
document.getElementById ('style-both-en-ja').disabled = true; |
| 38 |
|
|
">日本語訳だけ表示 <span lang=en>Show only Japanese translation</span></button> |
| 39 |
|
|
<p><button type=button onclick=" |
| 40 |
|
|
document.getElementById ('style-only-ja').disabled = true; |
| 41 |
|
|
document.getElementById ('style-both-en-ja').disabled = false; |
| 42 |
|
|
">英和対訳表示 <span lang=en>Show both English and Japanese texts</span></button> |
| 43 |
|
|
</ins> |
| 44 |
|
|
|
| 45 |
|
|
<p><span><!-- dummy --></span></p> |
| 46 |
|
|
<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>© 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 |
|
|
</div> |
| 67 |
|
|
|
| 68 |
|
|
<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 |
|
|
|
| 70 |
|
|
<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 |
|
|
背景労働者スクリプトを走らせるための API を定義します。 |
| 75 |
|
|
これにより、メッセージ・パッシングによるスレッド的操作を協調機構として利用できるようになります。</span></p> |
| 76 |
|
|
|
| 77 |
|
|
|
| 78 |
|
|
<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 |
|
|
|
| 80 |
|
|
<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 |
|
|
|
| 106 |
|
|
<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 |
|
|
|
| 109 |
|
|
<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 |
|
|
<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 |
|
|
</span><ol> |
| 144 |
|
|
<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 |
|
|
<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 |
|
|
<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 |
|
|
<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 |
|
|
|
| 159 |
|
|
<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 |
|
|
<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 |
|
|
|
| 163 |
|
|
<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 |
|
|
|
| 166 |
|
|
<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 |
|
|
|
| 171 |
|
|
<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 |
|
|
|
| 177 |
|
|
<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 |
|
|
|
| 180 |
|
|
|
| 181 |
|
|
<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 |
|
|
|
| 183 |
|
|
<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 |
|
|
|
| 185 |
|
|
<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 |
|
|
|
| 188 |
|
|
<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 |
|
|
|
| 190 |
|
|
<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 |
|
|
|
| 192 |
|
|
<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 |
|
|
|
| 195 |
|
|
<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ï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 |
|
|
|
| 200 |
|
|
<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><!DOCTYPE HTML> |
| 203 |
|
|
<html> |
| 204 |
|
|
<head> |
| 205 |
|
|
<title>Worker example: One-core computation</title> |
| 206 |
|
|
</head> |
| 207 |
|
|
<body> |
| 208 |
|
|
<p>The highest prime number discovered so far is: <output id="result"></output></p> |
| 209 |
|
|
<script> |
| 210 |
|
|
var worker = new Worker('worker.js'); |
| 211 |
|
|
worker.onmessage = function (event) { |
| 212 |
|
|
document.getElementById('result').textContent = event.data; |
| 213 |
|
|
}; |
| 214 |
|
|
</script> |
| 215 |
|
|
</body> |
| 216 |
|
|
</html></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 |
|
|
|
| 224 |
|
|
<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 |
|
|
|
| 226 |
|
|
<pre class="no-ja-translation" data-ja-hash="35390f08d92125ad461fd6bb5969cb0c"><span class=en-original lang=en>var n = 1; |
| 227 |
|
|
search: while (true) { |
| 228 |
|
|
n += 1; |
| 229 |
|
|
for (var i = 2; i <= Math.sqrt(n); i += 1) |
| 230 |
|
|
if (n % i == 0) |
| 231 |
|
|
continue search; |
| 232 |
|
|
// found a prime! |
| 233 |
|
|
postMessage(n); |
| 234 |
|
|
}</span></pre> |
| 235 |
|
|
|
| 236 |
|
|
<p class="no-ja-translation" data-ja-hash="48faeab09946f0578b4b421f4cf0a5db"><span class=en-original lang=en>The bulk of this code is simply an unoptimized search for a prime |
| 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 |
|
|
|
| 242 |
|
|
|
| 243 |
|
|
|
| 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><script> |
| 258 |
|
|
new Worker('worker.js'); |
| 259 |
|
|
</script></span></pre> |
| 260 |
|
|
|
| 261 |
|
|
<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 |
|
|
|
| 263 |
|
|
<pre class="no-ja-translation" data-ja-hash="cfd35229b68e597b6a21322a3e3c1aea"><span class=en-original lang=en>var server = new WebSocket('ws://whatwg.org/database'); |
| 264 |
|
|
var database = openDatabase('demobase', '1.0', 'Demo Database', 10240); |
| 265 |
|
|
server.onmessage = function (event) { |
| 266 |
|
|
// data is in the format "command key value" |
| 267 |
|
|
var data = event.data.split(' '); |
| 268 |
|
|
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 |
|
|
};</span></pre> |
| 279 |
|
|
|
| 280 |
|
|
<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><!DOCTYPE HTML> |
| 305 |
|
|
<html> |
| 306 |
|
|
<head> |
| 307 |
|
|
<title>Worker example: Stock ticker</title> |
| 308 |
|
|
<script> |
| 309 |
|
|
// TICKER |
| 310 |
|
|
var symbol = 'GOOG'; // default symbol to watch |
| 311 |
|
|
var ticker = new Worker('ticker.js'); |
| 312 |
|
|
|
| 313 |
|
|
// SEARCHER |
| 314 |
|
|
var searcher = new Worker('searcher.js'); |
| 315 |
|
|
function search(query) { |
| 316 |
|
|
searcher.postMessage(query); |
| 317 |
|
|
} |
| 318 |
|
|
|
| 319 |
|
|
// SYMBOL SELECTION UI |
| 320 |
|
|
function select(newSymbol) { |
| 321 |
|
|
symbol = newSymbol; |
| 322 |
|
|
ticker.postMessage(symbol); |
| 323 |
|
|
} |
| 324 |
|
|
</script> |
| 325 |
|
|
</head> |
| 326 |
|
|
<body> |
| 327 |
|
|
<p><output id="symbol"></output> <output id="value"></output></p> |
| 328 |
|
|
<script> |
| 329 |
|
|
ticker.onmessage = function (event) { |
| 330 |
|
|
var data = event.data.split(' '); |
| 331 |
|
|
document.getElementById('symbol').textContent = data[0]; |
| 332 |
|
|
document.getElementById('value').textContent = data[1]; |
| 333 |
|
|
}; |
| 334 |
|
|
ticker.postMessage(symbol); |
| 335 |
|
|
</script> |
| 336 |
|
|
<p><label>Search: <input type="text" oninput="search(this.value)"></label></p> |
| 337 |
|
|
<ul id="results"></ul> |
| 338 |
|
|
<script> |
| 339 |
|
|
searcher.onmessage = function (event) { |
| 340 |
|
|
var data = event.data.split(' '); |
| 341 |
|
|
var results = document.getElementById('results'); |
| 342 |
|
|
while (results.hasChildNodes()) // clear previous results |
| 343 |
|
|
results.removeChild(results.firstChild); |
| 344 |
|
|
for (var i = 0; i < 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 |
|
|
</script> |
| 357 |
|
|
<p>(The data in this example is not real. Try searching for "Google" or "Apple".)</p> |
| 358 |
|
|
</body> |
| 359 |
|
|
</html></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 |
|
|
|
| 365 |
|
|
<pre class="no-ja-translation" data-ja-hash="764d750a19834bf904d276466724339c"><span class=en-original lang=en>function get(url) { |
| 366 |
|
|
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 |
|
|
}</span></pre> |
| 375 |
|
|
|
| 376 |
|
|
<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 |
|
|
|
| 378 |
|
|
<pre class="no-ja-translation" data-ja-hash="66ef47eaf421ea8066871b71807859be"><span class=en-original lang=en>importScripts('io.js'); |
| 379 |
|
|
var timer; |
| 380 |
|
|
var symbol; |
| 381 |
|
|
function update() { |
| 382 |
|
|
postMessage(symbol + ' ' + get('stock.cgi?' + symbol)); |
| 383 |
|
|
timer = setTimeout(update, 10000); |
| 384 |
|
|
} |
| 385 |
|
|
onmessage = function (event) { |
| 386 |
|
|
if (timer) |
| 387 |
|
|
clearTimeout(timer); |
| 388 |
|
|
symbol = event.data; |
| 389 |
|
|
update(); |
| 390 |
|
|
};</span></pre> |
| 391 |
|
|
|
| 392 |
|
|
<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 |
|
|
|
| 394 |
|
|
<pre class="no-ja-translation" data-ja-hash="ac0353e2a69ae5ffdc861cca404ef9f0"><span class=en-original lang=en>importScripts('io.js'); |
| 395 |
|
|
onmessage = function (event) { |
| 396 |
|
|
postMessage(get('search.cgi?' + event.data)); |
| 397 |
|
|
};</span></pre> |
| 398 |
|
|
|
| 399 |
|
|
<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 |
|
|
|
| 404 |
|
|
<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 |
|
|
|
| 406 |
|
|
<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 |
|
|
|
| 412 |
|
|
<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><!DOCTYPE HTML> |
| 416 |
|
|
<html> |
| 417 |
|
|
<head> |
| 418 |
|
|
<title>Workers example: Multiviewer</title> |
| 419 |
|
|
<script> |
| 420 |
|
|
function openViewer() { |
| 421 |
|
|
window.open('viewer.html'); |
| 422 |
|
|
} |
| 423 |
|
|
</script> |
| 424 |
|
|
</head> |
| 425 |
|
|
<body> |
| 426 |
|
|
<p><button type=button onclick="openViewer()">Open a new |
| 427 |
|
|
viewer</button></p> |
| 428 |
|
|
<p>Each viewer opens in a new window. You can have as many viewers |
| 429 |
|
|
as you like, they all view the same data.</p> |
| 430 |
|
|
</body> |
| 431 |
|
|
</html></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><!DOCTYPE HTML> |
| 436 |
|
|
<html> |
| 437 |
|
|
<head> |
| 438 |
|
|
<title>Workers example: Multiviewer viewer</title> |
| 439 |
|
|
<script> |
| 440 |
|
|
var worker = new SharedWorker('worker.js', 'core'); |
| 441 |
|
|
|
| 442 |
|
|
// CONFIGURATION |
| 443 |
|
|
function configure(event) { |
| 444 |
|
|
if (event.data.substr(0, 4) != 'cfg ') return; |
| 445 |
|
|
var name = event.data.substr(4).split(' ', 1); |
| 446 |
|
|
// update display to mention our name is name |
| 447 |
|
|
document.getElementsByTagName('h1')[0].textContent += ' ' + name; |
| 448 |
|
|
// no longer need this listener |
| 449 |
|
|
worker.port.removeEventListener('message', configure, false); |
| 450 |
|
|
} |
| 451 |
|
|
worker.port.addEventListener('message', configure, false); |
| 452 |
|
|
|
| 453 |
|
|
// MAP |
| 454 |
|
|
function paintMap(event) { |
| 455 |
|
|
if (event.data.substr(0, 4) != 'map ') return; |
| 456 |
|
|
var data = event.data.substr(4).split(','); |
| 457 |
|
|
// display tiles data[0] .. data[8] |
| 458 |
|
|
var canvas = document.getElementById('map'); |
| 459 |
|
|
var context = canvas.getContext('2d'); |
| 460 |
|
|
for (var y = 0; y < 3; y += 1) { |
| 461 |
|
|
for (var x = 0; x < 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 |
|
|
worker.port.addEventListener('message', paintMap, false); |
| 472 |
|
|
|
| 473 |
|
|
// PUBLIC CHAT |
| 474 |
|
|
function updatePublicChat(event) { |
| 475 |
|
|
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 |
|
|
// display "<name> message" in public chat |
| 479 |
|
|
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 |
|
|
worker.port.addEventListener('message', updatePublicChat, false); |
| 488 |
|
|
|
| 489 |
|
|
// PRIVATE CHAT |
| 490 |
|
|
function startPrivateChat(event) { |
| 491 |
|
|
if (event.data.substr(0, 4) != 'msg ') return; |
| 492 |
|
|
var name = event.data.substr(4).split(' ', 1); |
| 493 |
|
|
var port = event.ports[0]; |
| 494 |
|
|
// 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 |
|
|
addMessage(name, event.data); |
| 511 |
|
|
}; |
| 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 |
|
|
worker.port.addEventListener('message', startPrivateChat, false); |
| 532 |
|
|
</script> |
| 533 |
|
|
</head> |
| 534 |
|
|
<body> |
| 535 |
|
|
<h1>Viewer</h1> |
| 536 |
|
|
<h2>Map</h2> |
| 537 |
|
|
<p><canvas id="map" height=150 width=150></canvas></p> |
| 538 |
|
|
<p> |
| 539 |
|
|
<button type=button onclick="worker.port.postMessage('mov left')">Left</button> |
| 540 |
|
|
<button type=button onclick="worker.port.postMessage('mov up')">Up</button> |
| 541 |
|
|
<button type=button onclick="worker.port.postMessage('mov down')">Down</button> |
| 542 |
|
|
<button type=button onclick="worker.port.postMessage('mov right')">Right</button> |
| 543 |
|
|
<button type=button onclick="worker.port.postMessage('set 0')">Set 0</button> |
| 544 |
|
|
<button type=button onclick="worker.port.postMessage('set 1')">Set 1</button> |
| 545 |
|
|
</p> |
| 546 |
|
|
<h2>Public Chat</h2> |
| 547 |
|
|
<dialog id="public"></dialog> |
| 548 |
|
|
<form onsubmit="worker.port.postMessage('txt ' + message.value); message.value = ''; return false;"> |
| 549 |
|
|
<p> |
| 550 |
|
|
<input type="text" name="message" size="50"> |
| 551 |
|
|
<button>Post</button> |
| 552 |
|
|
</p> |
| 553 |
|
|
</form> |
| 554 |
|
|
<h2>Private Chat</h2> |
| 555 |
|
|
<ul id="private"></ul> |
| 556 |
|
|
</body> |
| 557 |
|
|
</html> |
| 558 |
|
|
</span></pre> |
| 559 |
|
|
|
| 560 |
|
|
<p class="has-ja-translation" data-ja-hash="397850dab731150b72d5f0276dab0081"><span class=en-original lang=en>There are several key things worth noting about the way the |
| 561 |
|
|
viewer is written.</span><span class=ja-translation lang=ja>表示器の書き方についていくつか注意したい重要な点があります。</span></p> |
| 562 |
|
|
|
| 563 |
|
|
<p class="has-ja-translation" data-ja-hash="8bc9c1f9e0e102128838ea8c31c51306"><span class=en-original lang=en><strong>Multiple listeners</strong>. Instead of a single message |
| 564 |
|
|
processing function, the code here attaches multiple event |
| 565 |
|
|
listeners, each one performing a quick check to see if it is |
| 566 |
|
|
relevant for the message. In this example it doesn't make much |
| 567 |
|
|
difference, but if multiple authors wanted to collaborate using a |
| 568 |
|
|
single port to communicate with a worker, it would allow for |
| 569 |
|
|
independent code instead of changes having to all be made to a |
| 570 |
|
|
single event handling function.</span><span class=ja-translation lang=ja><strong>複数の聴取器</strong>。この符号では、メッセージ処理関数を1つ用意する代わりに、 |
| 571 |
|
|
複数の事象聴取器を付与し、それぞれが、それがメッセージに関連するかどうかを見るためにさらりと検査を行っています。 |
| 572 |
|
|
この例では大きな違いにはなりませんが、複数の著者が労働者と通信するために1つのポートを使って協調したい場合には、 |
| 573 |
|
|
独立した符号にできるので変更がある度に1つの事象取扱関数をいじらざるを得なくて済みます。</span></p> |
| 574 |
|
|
|
| 575 |
|
|
<p class="no-ja-translation" data-ja-hash="ce2f17c1c25589a0d4507c6fa9c1f532"><span class=en-original lang=en>Registering event listeners in this way also allows you to |
| 576 |
|
|
unregister specific listeners when you are done with them, as is |
| 577 |
|
|
done with the <code title="">configure()</code> method in this |
| 578 |
|
|
example.</span></p> |
| 579 |
|
|
|
| 580 |
|
|
<p class="has-ja-translation" data-ja-hash="4eb1fa2095f65662225da4c52db274f1"><span class=en-original lang=en>Finally, the worker:</span><span class=ja-translation lang=ja>最後に、労働者は次のようになります。</span></p> |
| 581 |
|
|
|
| 582 |
|
|
<pre class="no-ja-translation" data-ja-hash="2a6833ffcfe9252a21a8582ad69a4adf"><span class=en-original lang=en> |
| 583 |
|
|
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 < 0) return wrapX(x + map[0].length); |
| 602 |
|
|
if (x >= map[0].length) return wrapX(x - map[0].length); |
| 603 |
|
|
return x; |
| 604 |
|
|
} |
| 605 |
|
|
|
| 606 |
|
|
function wrapY(y) { |
| 607 |
|
|
if (y < 0) return wrapY(y + map.length); |
| 608 |
|
|
if (y >= map[0].length) return wrapY(y - map.length); |
| 609 |
|
|
return y; |
| 610 |
|
|
} |
| 611 |
|
|
|
| 612 |
|
|
function sendMapData(callback) { |
| 613 |
|
|
var data = ''; |
| 614 |
|
|
for (var y = viewer.y-1; y <= viewer.y+1; y += 1) { |
| 615 |
|
|
for (var x = viewer.x-1; x <= viewer.x+1; x += 1) { |
| 616 |
|
|
if (data != '') |
| 617 |
|
|
data += ','; |
| 618 |
|
|
data += map[y][x]; |
| 619 |
|
|
} |
| 620 |
|
|
} |
| 621 |
|
|
callback('map ' + data); |
| 622 |
|
|
} |
| 623 |
|
|
|
| 624 |
|
|
var viewers = {}; |
| 625 |
|
|
onconnect = function (event) { |
| 626 |
|
|
event.ports[0]._name = getNextName(); |
| 627 |
|
|
event.ports[0]._data = { port: event.port, x: 0, y: 0, }; |
| 628 |
|
|
viewers[event.ports[0]._name] = event.port._data; |
| 629 |
|
|
event.ports[0].postMessage('cfg ' + name); |
| 630 |
|
|
event.ports[0].onmessage = getMessage; |
| 631 |
|
|
sendMapData(event.ports[0].postMessage); |
| 632 |
|
|
}; |
| 633 |
|
|
|
| 634 |
|
|
function getMessage(event) { |
| 635 |
|
|
switch (event.data.substr(0, 4)) { |
| 636 |
|
|
case 'mov ': |
| 637 |
|
|
var direction = event.data.substr(4); |
| 638 |
|
|
var dx = 0; |
| 639 |
|
|
var dy = 0; |
| 640 |
|
|
switch (direction) { |
| 641 |
|
|
case 'up': dy = -1; break; |
| 642 |
|
|
case 'down': dy = 1; break; |
| 643 |
|
|
case 'left': dx = -1; break; |
| 644 |
|
|
case 'right': dx = 1; break; |
| 645 |
|
|
} |
| 646 |
|
|
event.target._data.x = wrapX(event.target._data.x + dx); |
| 647 |
|
|
event.target._data.y = wrapY(event.target._data.y + dy); |
| 648 |
|
|
sendMapData(event.target.postMessage); |
| 649 |
|
|
break; |
| 650 |
|
|
case 'set ': |
| 651 |
|
|
var value = event.data.substr(4); |
| 652 |
|
|
map[event.target._data.y][event.target._data.x] = value; |
| 653 |
|
|
for (var viewer in viewers) |
| 654 |
|
|
sendMapData(viewers[viewer].port.postMessage); |
| 655 |
|
|
break; |
| 656 |
|
|
case 'txt ': |
| 657 |
|
|
var name = event.target._name; |
| 658 |
|
|
var message = event.data.substr(4); |
| 659 |
|
|
for (var viewer in viewers) |
| 660 |
|
|
viewers[viewer].port.postMessage('txt ' + name + ' ' + message); |
| 661 |
|
|
break; |
| 662 |
|
|
case 'msg ': |
| 663 |
|
|
var party1 = event._data; |
| 664 |
|
|
var party2 = viewers[event.data.substr(4).split(' ', 1)]; |
| 665 |
|
|
if (party2) { |
| 666 |
|
|
var channel = new MessageChannel(); |
| 667 |
|
|
party1.port.postMessage('msg ' + party2.name, [channel.port1]); |
| 668 |
|
|
party2.port.postMessage('msg ' + party1.name, [channel.port2]); |
| 669 |
|
|
} |
| 670 |
|
|
break; |
| 671 |
|
|
} |
| 672 |
|
|
}</span></pre> |
| 673 |
|
|
|
| 674 |
|
|
<p class="no-ja-translation" data-ja-hash="80f59a8dae1df6b25c537e5041683f5d"><span class=en-original lang=en><strong>Connecting to multiple pages</strong>. The script uses |
| 675 |
|
|
the <code title=handler-SharedWorkerGlobalScope-onconnect><a href=#handler-sharedworkerglobalscope-onconnect>onconnect</a></code> |
| 676 |
|
|
event listener to listen for multiple connections.</span></p> |
| 677 |
|
|
|
| 678 |
|
|
<p class="has-ja-translation" data-ja-hash="5ce666b6338718b46fb0dee22dbea88c"><span class=en-original lang=en><strong>Direct channels</strong>. When the worker receives a |
| 679 |
|
|
"msg" message from one viewer naming another viewer, it sets up a |
| 680 |
|
|
direct connection between the two, so that the two viewers can |
| 681 |
|
|
communicate directly without the worker having to proxy all the |
| 682 |
|
|
messages.</span><span class=ja-translation lang=ja><strong>直接通信路</strong>。労働者がある閲覧器から他の閲覧器を名指した「msg」メッセージを受信した時は、 |
| 683 |
|
|
両者間の直接の接続を設定し、労働者がすべてのメッセージを仲介せずとも両閲覧器が直接通信できるようにします。</span></p> |
| 684 |
|
|
|
| 685 |
|
|
<p class="has-ja-translation" data-ja-hash="add583522732edb8aca6202c451ddb27" data-ja-real-hash="8d892cfe0423f9a15e275e47c6b45600"><span class=en-original lang=en><a href=http://www.whatwg.org/demos/workers/multiviewer/page.html>View this example online</a>.</span><span class=ja-translation lang=ja><a href=http://www.whatwg.org/demos/workers/multiviewer/page.html>この例をオンラインで表示する</a>。</span></p> |
| 686 |
|
|
|
| 687 |
|
|
|
| 688 |
|
|
<h4 id=delegation class="has-ja-translation" data-ja-hash="57b11d3816e9f83adb4dd2ecb2a311b5"><span class=en-original lang=en><span class=secno>1.2.5 </span>Delegation</span><span class=ja-translation lang=ja><span class=secno>1.2.5 </span>委譲</span></h4> |
| 689 |
|
|
|
| 690 |
|
|
<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><!DOCTYPE HTML> |
| 701 |
|
|
<html> |
| 702 |
|
|
<head> |
| 703 |
|
|
<title>Worker example: One-core computation</title> |
| 704 |
|
|
</head> |
| 705 |
|
|
<body> |
| 706 |
|
|
<p>The highest prime number discovered so far is: <output id="result"></output></p> |
| 707 |
|
|
<script> |
| 708 |
|
|
var worker = new Worker('worker.js'); |
| 709 |
|
|
worker.onmessage = function (event) { |
| 710 |
|
|
document.getElementById('result').textContent = event.data; |
| 711 |
|
|
}; |
| 712 |
|
|
</script> |
| 713 |
|
|
</body> |
| 714 |
|
|
</html></span></pre> |
| 715 |
|
|
|
| 716 |
|
|
<p class="has-ja-translation" data-ja-hash="12a62a74d5156b6d85136f5fc41a4ee1"><span class=en-original lang=en>The worker itself is as follows:</span><span class=ja-translation lang=ja>労働者自体は次の通りです。</span></p> |
| 717 |
|
|
|
| 718 |
|
|
<pre class="no-ja-translation" data-ja-hash="c2f14df3c3648ecb143c9e271b6721df"><span class=en-original lang=en>// settings |
| 719 |
|
|
var num_workers = 10; |
| 720 |
|
|
var items_per_worker = 1000000; |
| 721 |
|
|
|
| 722 |
|
|
// start the workers |
| 723 |
|
|
var result = 0; |
| 724 |
|
|
var pending_workers = num_workers; |
| 725 |
|
|
for (var i = 0; i < num_workers; i += 1) { |
| 726 |
|
|
var worker = new Worker('core.js'); |
| 727 |
|
|
worker.postMessage(i * items_per_worker); |
| 728 |
|
|
worker.postMessage((i+1) * items_per_worker); |
| 729 |
|
|
worker.onmessage = storeResult; |
| 730 |
|
|
} |
| 731 |
|
|
|
| 732 |
|
|
// handle the results |
| 733 |
|
|
function storeResult(event) { |
| 734 |
|
|
result += 1*event.data; |
| 735 |
|
|
pending_workers -= 1; |
| 736 |
|
|
if (pending_workers <= 0) |
| 737 |
|
|
postMessage(result); // finished! |
| 738 |
|
|
}</span></pre> |
| 739 |
|
|
|
| 740 |
|
|
<p class="has-ja-translation" data-ja-hash="f9236b42d2a99d988b848353511797fc"><span class=en-original lang=en>It consists of a loop to start the subworkers, and then a handler |
| 741 |
|
|
that waits for all the subworkers to respond.</span><span class=ja-translation lang=ja>これは部分労働者を開始するループと、 |
| 742 |
|
|
すべての部分労働者が応答するのを待つ取扱器から成っています。</span></p> |
| 743 |
|
|
|
| 744 |
|
|
<p class="has-ja-translation" data-ja-hash="53f3483f6fffa25f7c6963e58d683f43"><span class=en-original lang=en>The subworkers are implemented as follows:</span><span class=ja-translation lang=ja>部分労働者は次のように実装します。</span></p> |
| 745 |
|
|
|
| 746 |
|
|
<pre class="no-ja-translation" data-ja-hash="90fc569c1c634a87b725ebbe4cc1e2f4"><span class=en-original lang=en>var start; |
| 747 |
|
|
onmessage = getStart; |
| 748 |
|
|
function getStart(event) { |
| 749 |
|
|
start = 1*event.data; |
| 750 |
|
|
onmessage = getEnd; |
| 751 |
|
|
} |
| 752 |
|
|
|
| 753 |
|
|
var end; |
| 754 |
|
|
function getEnd(event) { |
| 755 |
|
|
end = 1*event.data; |
| 756 |
|
|
onmessage = null; |
| 757 |
|
|
work(); |
| 758 |
|
|
} |
| 759 |
|
|
|
| 760 |
|
|
function work() { |
| 761 |
|
|
var result = 0; |
| 762 |
|
|
for (var i = start; i < end; i += 1) { |
| 763 |
|
|
// perform some complex calculation here |
| 764 |
|
|
result += 1; |
| 765 |
|
|
} |
| 766 |
|
|
postMessage(result); |
| 767 |
|
|
close(); |
| 768 |
|
|
}</span></pre> |
| 769 |
|
|
|
| 770 |
|
|
<p class="has-ja-translation" data-ja-hash="fbf1b083b03c85854a8e892ef8add172"><span class=en-original lang=en>They receive two numbers in two events, perform the computation |
| 771 |
|
|
for the range of numbers thus specified, and then report the result |
| 772 |
|
|
back to the parent.</span><span class=ja-translation lang=ja>部分労働者は2つの事象で2つの数を受信し、指定された数の範囲の計算を行った後、 |
| 773 |
|
|
結果を親に報告します。 |
| 774 |
|
|
</span></p> |
| 775 |
|
|
|
| 776 |
|
|
<p class="has-ja-translation" data-ja-hash="add583522732edb8aca6202c451ddb27" data-ja-real-hash="4318fb9a581a7c14e58bfb2d61809f0c"><span class=en-original lang=en><a href=http://www.whatwg.org/demos/workers/multicore/page.html>View this example online</a>.</span><span class=ja-translation lang=ja><a href=http://www.whatwg.org/demos/workers/multicore/page.html>この例をオンラインで表示する</a>。</span></p> |
| 777 |
|
|
|
| 778 |
|
|
|
| 779 |
|
|
<h4 id=providing-libraries class="has-ja-translation" data-ja-hash="6c37218e175bff77f69bd84b1ab5da58"><span class=en-original lang=en><span class=secno>1.2.6 </span>Providing libraries</span><span class=ja-translation lang=ja><span class=secno>1.2.6 </span>ライブラリーの提供</span></h4> |
| 780 |
|
|
|
| 781 |
|
|
<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 |
|
|
|
| 783 |
|
|
<p class="no-ja-translation" data-ja-hash="12371907fb7e8389f76fabaf7a5f8303"><span class=en-original lang=en>Suppose that a cryptography library is made available that |
| 784 |
|
|
provides three tasks:</span></p> |
| 785 |
|
|
|
| 786 |
|
|
<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 |
|
|
|
| 788 |
|
|
<dd class="no-ja-translation" data-ja-hash="cf9020803baa896d8a183fe324563704"><span class=en-original lang=en>Takes a port, on which it will send two messages, first the |
| 789 |
|
|
public key and then the private key.</span></dd> |
| 790 |
|
|
|
| 791 |
|
|
<dt class="no-ja-translation" data-ja-hash="fb7dd035a8141087578088ce61f9db22"><span class=en-original lang=en>Given a plaintext and a public key, return the corresponding cyphertext</span></dt> |
| 792 |
|
|
|
| 793 |
|
|
<dd class="no-ja-translation" data-ja-hash="1d31efc883e22a218f807161c65291f0"><span class=en-original lang=en>Takes a port, to which any number of messages can be sent, the |
| 794 |
|
|
first giving the public key, and the remainder giving the |
| 795 |
|
|
plaintext, each of which is encrypted and then sent on that same |
| 796 |
|
|
channel as the cyphertext. The user can close the port when it is |
| 797 |
|
|
done encrypting content.</span></dd> |
| 798 |
|
|
|
| 799 |
|
|
<dt class="no-ja-translation" data-ja-hash="11ea02c6f203744166e5a89e81a81337"><span class=en-original lang=en>Given a cyphertext and a private key, return the corresponding plaintext</span></dt> |
| 800 |
|
|
|
| 801 |
|
|
<dd class="no-ja-translation" data-ja-hash="c157fe0e540c248dc1db29edbd80ff82"><span class=en-original lang=en>Takes a port, to which any number of messages can be sent, the |
| 802 |
|
|
first giving the private key, and the remainder giving the |
| 803 |
|
|
cyphertext, each of which is decrypted and then sent on that same |
| 804 |
|
|
channel as the plaintext. The user can close the port when it is |
| 805 |
|
|
done decrypting content.</span></dd> |
| 806 |
|
|
|
| 807 |
|
|
</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 |
|
|
|
| 809 |
|
|
<pre class="no-ja-translation" data-ja-hash="6c23fb6fef8f715101d908de56f2cb63"><span class=en-original lang=en>function handleMessage(e) { |
| 810 |
|
|
if (e.data == "genkeys") |
| 811 |
|
|
genkeys(e.ports[0]); |
| 812 |
|
|
else if (e.data == "encrypt") |
| 813 |
|
|
encrypt(e.ports[0]); |
| 814 |
|
|
else if (e.data == "decrypt") |
| 815 |
|
|
decrypt(e.ports[0]); |
| 816 |
|
|
} |
| 817 |
|
|
|
| 818 |
|
|
function genkeys(p) { |
| 819 |
|
|
var keys = _generateKeyPair(); |
| 820 |
|
|
p.postMessage(keys[0]); |
| 821 |
|
|
p.postMessage(keys[1]); |
| 822 |
|
|
} |
| 823 |
|
|
|
| 824 |
|
|
function encrypt(p) { |
| 825 |
|
|
var key, state = 0; |
| 826 |
|
|
p.onmessage = function (e) { |
| 827 |
|
|
if (state == 0) { |
| 828 |
|
|
key = e.data; |
| 829 |
|
|
state = 1; |
| 830 |
|
|
} else { |
| 831 |
|
|
p.postMessage(_encrypt(key, e.data)); |
| 832 |
|
|
} |
| 833 |
|
|
}; |
| 834 |
|
|
} |
| 835 |
|
|
|
| 836 |
|
|
function decrypt(p) { |
| 837 |
|
|
var key, state = 0; |
| 838 |
|
|
p.onmessage = function (e) { |
| 839 |
|
|
if (state == 0) { |
| 840 |
|
|
key = e.data; |
| 841 |
|
|
state = 1; |
| 842 |
|
|
} else { |
| 843 |
|
|
p.postMessage(_decrypt(key, e.data)); |
| 844 |
|
|
} |
| 845 |
|
|
}; |
| 846 |
|
|
} |
| 847 |
|
|
|
| 848 |
|
|
// support being used as a shared worker as well as a dedicated worker |
| 849 |
|
|
if (this.onmessage) // dedicated worker |
| 850 |
|
|
onmessage = handleMessage; |
| 851 |
|
|
else // shared worker |
| 852 |
|
|
onconnect = function (e) { e.port.onmessage = handleMessage; } |
| 853 |
|
|
|
| 854 |
|
|
|
| 855 |
|
|
// the "crypto" functions: |
| 856 |
|
|
|
| 857 |
|
|
function _generateKeyPair() { |
| 858 |
|
|
return [Math.random(), Math.random()]; |
| 859 |
|
|
} |
| 860 |
|
|
|
| 861 |
|
|
function _encrypt(k, s) { |
| 862 |
|
|
return 'encrypted-' + k + ' ' + s; |
| 863 |
|
|
} |
| 864 |
|
|
|
| 865 |
|
|
function _decrypt(k, s) { |
| 866 |
|
|
return s.substr(s.indexOf(' ')+1); |
| 867 |
|
|
}</span></pre> |
| 868 |
|
|
|
| 869 |
|
|
<p class="no-ja-translation" data-ja-hash="e6e3003b829ed060f5926d1763f29c2e"><span class=en-original lang=en>Note that the crypto functions here are just stubs and don't do |
| 870 |
|
|
real cryptography.</span></p> |
| 871 |
|
|
|
| 872 |
|
|
<p class="has-ja-translation" data-ja-hash="76f1d5866d92bc1036d1198cf4eda428"><span class=en-original lang=en>This library could be used as follows:</span><span class=ja-translation lang=ja>このライブラリーは次のように使うことができます。</span></p> |
| 873 |
|
|
|
| 874 |
|
|
<pre class="no-ja-translation" data-ja-hash="e88a411ca9b20f088116732dc0db6171"><span class=en-original lang=en><!DOCTYPE HTML> |
| 875 |
|
|
<html> |
| 876 |
|
|
<head> |
| 877 |
|
|
<title>Worker example: Crypto library</title> |
| 878 |
|
|
<script> |
| 879 |
|
|
var crytoLib = new Worker('libcrypto-v1.js'); // or could use 'libcrypto-v2.js' |
| 880 |
|
|
function getKeys() { |
| 881 |
|
|
var state = 0; |
| 882 |
|
|
cryptoLib.startConversation("genkeys").onmessage = function (e) { |
| 883 |
|
|
if (state == 0) |
| 884 |
|
|
document.getElementById('public').value = e.data; |
| 885 |
|
|
else if (state == 1) |
| 886 |
|
|
document.getElementById('private').value = e.data; |
| 887 |
|
|
state += 1; |
| 888 |
|
|
}; |
| 889 |
|
|
} |
| 890 |
|
|
function enc() { |
| 891 |
|
|
var port = cryptoLib.startConversation("encrypt"); |
| 892 |
|
|
port.postMessage(document.getElementById('public').value); |
| 893 |
|
|
port.postMessage(document.getElementById('input').value); |
| 894 |
|
|
port.onmessage = function (e) { |
| 895 |
|
|
document.getElementById('input').value = e.data; |
| 896 |
|
|
port.close(); |
| 897 |
|
|
}; |
| 898 |
|
|
} |
| 899 |
|
|
function dec() { |
| 900 |
|
|
var port = cryptoLib.startConversation("decrypt"); |
| 901 |
|
|
port.postMessage(document.getElementById('private').value); |
| 902 |
|
|
port.postMessage(document.getElementById('input').value); |
| 903 |
|
|
port.onmessage = function (e) { |
| 904 |
|
|
document.getElementById('input').value = e.data; |
| 905 |
|
|
port.close(); |
| 906 |
|
|
}; |
| 907 |
|
|
} |
| 908 |
|
|
</script> |
| 909 |
|
|
<style> |
| 910 |
|
|
textarea { display: block; } |
| 911 |
|
|
</style> |
| 912 |
|
|
</head> |
| 913 |
|
|
<body onload="getKeys()"> |
| 914 |
|
|
<fieldset> |
| 915 |
|
|
<legend>Keys</legend> |
| 916 |
|
|
<p><label>Public Key: <textarea id="public"></textarea></label></p> |
| 917 |
|
|
<p><label>Private Key: <textarea id="private"></textarea></label></p> |
| 918 |
|
|
</fieldset> |
| 919 |
|
|
<p><label>Input: <textarea id="input"></textarea></label></p> |
| 920 |
|
|
<p><button onclick="enc()">Encrypt</button> <button onclick="dec()">Decrypt</button></p> |
| 921 |
|
|
</body> |
| 922 |
|
|
</html></span></pre> |
| 923 |
|
|
|
| 924 |
|
|
<p class="no-ja-translation" data-ja-hash="13181de825fa0e152c5a954e55715a15"><span class=en-original lang=en>A later version of the API, though, might want to offload all the |
| 925 |
|
|
crypto work onto subworkers. This could be done as follows:</span></p> |
| 926 |
|
|
|
| 927 |
|
|
<pre class="no-ja-translation" data-ja-hash="4700bd96e4f3524347953c148b483479"><span class=en-original lang=en>function handleMessage(e) { |
| 928 |
|
|
if (e.data == "genkeys") |
| 929 |
|
|
genkeys(e.ports[0]); |
| 930 |
|
|
else if (e.data == "encrypt") |
| 931 |
|
|
encrypt(e.ports[0]); |
| 932 |
|
|
else if (e.data == "decrypt") |
| 933 |
|
|
decrypt(e.ports[0]); |
| 934 |
|
|
} |
| 935 |
|
|
|
| 936 |
|
|
function genkeys(p) { |
| 937 |
|
|
var generator = new Worker('libcrypto-v2-generator.js'); |
| 938 |
|
|
generator.postMessage('', [p]); |
| 939 |
|
|
} |
| 940 |
|
|
|
| 941 |
|
|
function encrypt(p) { |
| 942 |
|
|
p.onmessage = function (e) { |
| 943 |
|
|
var key = e.data; |
| 944 |
|
|
var encryptor = new Worker('libcrypto-v2-encryptor.js'); |
| 945 |
|
|
encryptor.postMessage(key, [p]); |
| 946 |
|
|
}; |
| 947 |
|
|
} |
| 948 |
|
|
|
| 949 |
|
|
function encrypt(p) { |
| 950 |
|
|
p.onmessage = function (e) { |
| 951 |
|
|
var key = e.data; |
| 952 |
|
|
var decryptor = new Worker('libcrypto-v2-decryptor.js'); |
| 953 |
|
|
decryptor.postMessage(key, [p]); |
| 954 |
|
|
}; |
| 955 |
|
|
} |
| 956 |
|
|
|
| 957 |
|
|
// support being used as a shared worker as well as a dedicated worker |
| 958 |
|
|
if (this.onmessage) // dedicated worker |
| 959 |
|
|
onmessage = handleMessage; |
| 960 |
|
|
else // shared worker |
| 961 |
|
|
onconnect = function (e) { e.ports[0].onmessage = handleMessage }; |
| 962 |
|
|
</span></pre> |
| 963 |
|
|
|
| 964 |
|
|
<p class="has-ja-translation" data-ja-hash="fc1d14c413a94a9015153067739845e7"><span class=en-original lang=en>The little subworkers would then be as follows.</span><span class=ja-translation lang=ja>小部分労働者は次の通りです。</span></p> |
| 965 |
|
|
|
| 966 |
|
|
<p class="has-ja-translation" data-ja-hash="66f9c4d246b0081919ced7e46c4a9db2"><span class=en-original lang=en>For generating key pairs:</span><span class=ja-translation lang=ja>鍵組の生成用:</span></p> |
| 967 |
|
|
|
| 968 |
|
|
<pre class="no-ja-translation" data-ja-hash="7fcbde64ee437c101414bcc98d9e1ee0"><span class=en-original lang=en>onmessage = function (e) { |
| 969 |
|
|
var k = _generateKeyPair(); |
| 970 |
|
|
e.ports[0].postMessage(k[0]); |
| 971 |
|
|
e.ports[0].postMessage(k[1]); |
| 972 |
|
|
close(); |
| 973 |
|
|
} |
| 974 |
|
|
|
| 975 |
|
|
function _generateKeyPair() { |
| 976 |
|
|
return [Math.random(), Math.random()]; |
| 977 |
|
|
}</span></pre> |
| 978 |
|
|
|
| 979 |
|
|
<p class="has-ja-translation" data-ja-hash="1f07f24df05f20de47483db4dfde2017"><span class=en-original lang=en>For encrypting:</span><span class=ja-translation lang=ja>暗号化用:</span></p> |
| 980 |
|
|
|
| 981 |
|
|
<pre class="no-ja-translation" data-ja-hash="2b1eebc1012c646cca86282c7d07539a"><span class=en-original lang=en>onmessage = function (e) { |
| 982 |
|
|
var key = e.data; |
| 983 |
|
|
e.ports[0].onmessage = function (e) { |
| 984 |
|
|
var s = e.data; |
| 985 |
|
|
postMessage(_encrypt(key, s)); |
| 986 |
|
|
} |
| 987 |
|
|
e.ports[0].onclose = function (e) { |
| 988 |
|
|
close(); |
| 989 |
|
|
} |
| 990 |
|
|
} |
| 991 |
|
|
|
| 992 |
|
|
function _encrypt(k, s) { |
| 993 |
|
|
return 'encrypted-' + k + ' ' + s; |
| 994 |
|
|
}</span></pre> |
| 995 |
|
|
|
| 996 |
|
|
<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 |
|
|
|
| 998 |
|
|
<pre class="no-ja-translation" data-ja-hash="0bd5e3330bc5782fe8bcfb158e1367e0"><span class=en-original lang=en>onmessage = function (e) { |
| 999 |
|
|
var key = e.data; |
| 1000 |
|
|
e.ports[0].onmessage = function (e) { |
| 1001 |
|
|
var s = e.data; |
| 1002 |
|
|
postMessage(_decrypt(key, s)); |
| 1003 |
|
|
} |
| 1004 |
|
|
e.ports[0].onclose = function (e) { |
| 1005 |
|
|
close(); |
| 1006 |
|
|
} |
| 1007 |
|
|
} |
| 1008 |
|
|
|
| 1009 |
|
|
function _decrypt(k, s) { |
| 1010 |
|
|
return s.substr(s.indexOf(' ')+1); |
| 1011 |
|
|
}</span></pre> |
| 1012 |
|
|
|
| 1013 |
|
|
<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 — 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 |
|
|
|
| 1020 |
|
|
|
| 1021 |
|
|
|
| 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 |
|
|
|
| 1025 |
|
|
<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 |
|
|
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 |
|
|
規定の一部ではありません。 |
| 1029 |
|
|
この仕様書のそれ以外の部分はすべて規定の一部です。</span></p> |
| 1030 |
|
|
|
| 1031 |
|
|
<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 |
|
|
(例えば「先頭の間隔文字をすべて除去します」や「偽を返し、これらの段階を停止します」) |
| 1053 |
|
|
は、算法を紹介するに当たって使われたキーワード (<em class=rfc2119 title="MUST">しなければなりません</em>、 |
| 1054 |
|
|
<em class=rfc2119 title="SHOULD">するべきです</em>、<em class=rfc2119 title="MAY">して構いません</em>など) の意味により解釈します。</span></p> |
| 1055 |
|
|
|
| 1056 |
|
|
<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 |
|
|
最終的な結果が等価である限り、任意の方法で実装して<em class=rfc2119 title="MAY">構いません</em>。 |
| 1067 |
|
|
(特に、この仕様書で定義されている算法は追うのを簡単にしており、 |
| 1068 |
|
|
高性能であることを目指してはいません。)</span></p> |
| 1069 |
|
|
|
| 1070 |
|
|
<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 |
|
|
|
| 1073 |
|
|
<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 |
|
|
記憶容量を使い尽くすことを防ぐため、 |
| 1078 |
|
|
あるいは環境特有の制限に対応するためなどの目的で、 |
| 1079 |
|
|
別段の制約のない入力に対して実装特有の制限を設けて<em class=rfc2119 title="MAY">構いません</em>。</span></p> |
| 1080 |
|
|
|
| 1081 |
|
|
|
| 1082 |
|
|
<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 |
|
|
|
| 1084 |
|
|
<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 |
|
|
|
| 1087 |
|
|
<dl><dt class="no-ja-translation" data-ja-hash="6bff62b10d884fb77428cfe168cd783d"><span class=en-original lang=en>HTML5</span></dt> |
| 1088 |
|
|
|
| 1089 |
|
|
<dd> |
| 1090 |
|
|
|
| 1091 |
|
|
<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 |
|
|
|
| 1095 |
|
|
</dd> |
| 1096 |
|
|
|
| 1097 |
|
|
<dt class="no-ja-translation" data-ja-hash="21838f6e93b1a2157b16dcb6281ff225"><span class=en-original lang=en>WebIDL</span></dt> |
| 1098 |
|
|
|
| 1099 |
|
|
<dd> |
| 1100 |
|
|
|
| 1101 |
|
|
<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 |
|
|
|
| 1104 |
|
|
</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 |
|
|
は実際には界面) を時々使いますが、より正確な「界面 <code title="">Foo</code> |
| 1113 |
|
|
を実装しているオブジェクト」の代わりに用いています。</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 |
|
|
<p class="no-ja-translation" data-ja-hash="63fe78b97a0b5051e1ffbf6ee2f1e483"><span class=en-original lang=en>The term "JavaScript" is used to refer to ECMA262, rather than |
| 1131 |
|
|
the official term ECMAScript, since the term JavaScript is more |
| 1132 |
|
|
widely known. <a href=#refsECMA262>[ECMA262]</a></span></p> |
| 1133 |
|
|
|
| 1134 |
|
|
|
| 1135 |
|
|
<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> |
| 1136 |
|
|
|
| 1137 |
|
|
<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 |
| 1138 |
|
|
workers. Dedicated workers, once created, and are linked to their |
| 1139 |
|
|
creator; but message ports can be used to communicate from a |
| 1140 |
|
|
dedicated worker to multiple other browsing contexts or |
| 1141 |
|
|
workers. Shared workers, on the other hand, are named, and once |
| 1142 |
|
|
created any script running in the same <span>origin</span> can |
| 1143 |
|
|
obtain a reference to that worker and communicate with it.</span></p> |
| 1144 |
|
|
|
| 1145 |
|
|
|
| 1146 |
|
|
<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> |
| 1147 |
|
|
|
| 1148 |
|
|
<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> |
| 1149 |
|
|
|
| 1150 |
|
|
<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> |
| 1151 |
|
|
|
| 1152 |
|
|
<pre class="idl no-ja-translation" data-ja-hash="178d3cd44219dfb44aaed9b80a647a18"><span class=en-original lang=en>interface <dfn id=workerglobalscope>WorkerGlobalScope</dfn> { |
| 1153 |
|
|
readonly attribute <a href=#workerglobalscope>WorkerGlobalScope</a> <a href=#dom-workerglobalscope-self title=dom-WorkerGlobalScope-self>self</a>; |
| 1154 |
|
|
readonly attribute <a href=#workerlocation>WorkerLocation</a> <a href=#dom-workerglobalscope-location title=dom-WorkerGlobalScope-location>location</a>; |
| 1155 |
|
|
// also implements everything on <a href=#workerutils>WorkerUtils</a> |
| 1156 |
|
|
|
| 1157 |
|
|
void <a href=#dom-workerglobalscope-close title=dom-WorkerGlobalScope-close>close</a>(); |
| 1158 |
|
|
attribute <span>EventListener</span> <a href=#handler-workerglobalscope-onclose title=handler-WorkerGlobalScope-onclose>onclose</a>; |
| 1159 |
|
|
attribute <span>EventListener</span> <a href=#handler-workerglobalscope-onerror title=handler-WorkerGlobalScope-onerror>onerror</a>; |
| 1160 |
|
|
};</span></pre> |
| 1161 |
|
|
|
| 1162 |
|
|
<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 |
| 1163 |
|
|
must also implement the <code>EventTarget</code> interface.</span></p> |
| 1164 |
|
|
|
| 1165 |
|
|
<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 |
| 1166 |
|
|
must return the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object itself.</span></p> |
| 1167 |
|
|
|
| 1168 |
|
|
<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> |
| 1169 |
|
|
attribute must return the <code><a href=#workerlocation>WorkerLocation</a></code> object created |
| 1170 |
|
|
for the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object when the worker was |
| 1171 |
|
|
created. It represents the <span>absolute URL</span> of the script |
| 1172 |
|
|
that was used to initialize the worker.</span></p> |
| 1173 |
|
|
|
| 1174 |
|
|
<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 |
| 1175 |
|
|
a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, the user agent must run the |
| 1176 |
|
|
following steps:</span></p> |
| 1177 |
|
|
|
| 1178 |
|
|
<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 |
| 1179 |
|
|
event</span> called <code title=event-close>close</code> at the |
| 1180 |
|
|
<code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object.</span></li> |
| 1181 |
|
|
|
| 1182 |
|
|
<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 |
| 1183 |
|
|
<a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to |
| 1184 |
|
|
true.</span></li> |
| 1185 |
|
|
|
| 1186 |
|
|
<li><p class="no-ja-translation" data-ja-hash="0afdc5b2c3ab31e81585beed912448d2"><span class=en-original lang=en>For each <code>MessagePort</code> object that is entangled |
| 1187 |
|
|
with another port and that has one (but only one) port whose owner |
| 1188 |
|
|
is the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object on which the method |
| 1189 |
|
|
was invoked (this would include, for instance, the implicit port in |
| 1190 |
|
|
used for dedicated workers), disentangle the two ports.</span></li> |
| 1191 |
|
|
|
| 1192 |
|
|
</ol><p class="no-ja-translation" data-ja-hash="82e59a1ba6d95a68947e7065fd8ac80b"><span class=en-original lang=en>The following are the <span>event handler attributes</span> (and their corresponding <span title="event handler event type">event handler event types</span>) |
| 1193 |
|
|
that must be supported, as DOM attributes, by objects implementing |
| 1194 |
|
|
the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> interface:</span></p> |
| 1195 |
|
|
|
| 1196 |
|
|
<table><thead><tr><th class="no-ja-translation" data-ja-hash="c85726f0c6ba202006ec1f912e68aa76"><span class=en-original lang=en><span title="event handler attributes">event handler attribute</span> </span><th class="no-ja-translation" data-ja-hash="3fc98eebba71602c62d8b2fd74645dc9"><span class=en-original lang=en><span>Event handler event type</span> |
| 1197 |
|
|
</span><tbody><tr><td 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><td class="no-ja-translation" data-ja-hash="2f9d2bb012a2644f743804c1c46e668e"><span class=en-original lang=en> <code title=event-close>close</code> |
| 1198 |
|
|
</span><tr><td class="no-ja-translation" data-ja-hash="08a21be8031dd240d32ac8ab2b17a9ac"><span class=en-original lang=en><dfn id=handler-workerglobalscope-onerror title=handler-WorkerGlobalScope-onerror><code>onerror</code></dfn> </span><td class="no-ja-translation" data-ja-hash="bf1b78c16e7c3a3de662d83f487bffff"><span class=en-original lang=en> <code title=event-error>error</code> |
| 1199 |
|
|
</span></table><h4 id=dedicated-workers-and-the-dedicatedworkerglobalscope-interface class="no-ja-translation" data-ja-hash="a4b427f41de050a77385a1705efbb7c1"><span class=en-original lang=en><span class=secno>4.1.2 </span>Dedicated workers and the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> interface</span></h4> |
| 1200 |
|
|
|
| 1201 |
|
|
<!-- the XXX below is for collapsing this interface onto WorkerGlobalScope so it looks like just one interface - the inheritance is a spec fiction only --> |
| 1202 |
|
|
<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> { |
| 1203 |
|
|
void <a href=#dom-dedicatedworkerglobalscope-postmessage title=dom-DedicatedWorkerGlobalScope-postMessage>postMessage</a>(in any message, [Optional] in <span>MessagePortArray</span> ports);<!-- |
| 1204 |
|
|
<span>MessagePort</span> <span title="dom-DedicatedWorkerGlobalScope-startConversation">startConversation</span>(in any message);--> |
| 1205 |
|
|
attribute <span>EventListener</span> <a href=#handler-dedicatedworkerglobalscope-onmessage title=handler-DedicatedWorkerGlobalScope-onmessage>onmessage</a>; |
| 1206 |
|
|
};</span></pre> |
| 1207 |
|
|
|
| 1208 |
|
|
<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 |
| 1209 |
|
|
had an implicit <code>MessagePort</code> associated with them. This |
| 1210 |
|
|
port is part of a channel that is set up when the worker is created, |
| 1211 |
|
|
but it is not exposed. This object must never be garbage collected |
| 1212 |
|
|
before the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span></p> |
| 1213 |
|
|
|
| 1214 |
|
|
<p class="no-ja-translation" data-ja-hash="3737098ad5998864275d8ee619bd864e"><span class=en-original lang=en>All messages received by that port must immediately be retargeted |
| 1215 |
|
|
at the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object.</span></p> |
| 1216 |
|
|
|
| 1217 |
|
|
<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><!-- |
| 1218 |
|
|
and <dfn |
| 1219 |
|
|
title="dom-DedicatedWorkerGlobalScope-startConversation"><code>startConversation()</code></dfn>--> |
| 1220 |
|
|
method<!--s (startConversation)--> on |
| 1221 |
|
|
<code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> objects must act as if, when |
| 1222 |
|
|
invoked, it<!--/they (startConversation)--> immediately invoked the |
| 1223 |
|
|
method of the same name on the port, with the same arguments, and |
| 1224 |
|
|
returned the same return value.</span></p> |
| 1225 |
|
|
|
| 1226 |
|
|
<p class="no-ja-translation" data-ja-hash="4485ef1302525e70204d808989daff0e"><span class=en-original lang=en>The following are the <span>event handler attributes</span> (and their corresponding <span title="event handler event type">event handler event types</span>) |
| 1227 |
|
|
that must be supported, as DOM attributes, by objects implementing |
| 1228 |
|
|
the <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> interface:</span></p> |
| 1229 |
|
|
|
| 1230 |
|
|
<table><thead><tr><th class="no-ja-translation" data-ja-hash="c85726f0c6ba202006ec1f912e68aa76"><span class=en-original lang=en><span title="event handler attributes">event handler attribute</span> </span><th class="no-ja-translation" data-ja-hash="3fc98eebba71602c62d8b2fd74645dc9"><span class=en-original lang=en><span>Event handler event type</span> |
| 1231 |
|
|
</span><tbody><tr><td class="no-ja-translation" data-ja-hash="0d8bd2da6a52d641c317fac6d1c953b2"><span class=en-original lang=en><dfn id=handler-dedicatedworkerglobalscope-onmessage title=handler-DedicatedWorkerGlobalScope-onmessage><code>onmessage</code></dfn> </span><td class="no-ja-translation" data-ja-hash="fe07e2527bf13c457386ab4807af84a0"><span class=en-original lang=en> <code title=event-message>message</code> |
| 1232 |
|
|
</span></table><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> |
| 1233 |
|
|
networking model, a dedicated worker is an extension of the |
| 1234 |
|
|
<span>cache host</span> from which it was created.</span></p> |
| 1235 |
|
|
|
| 1236 |
|
|
|
| 1237 |
|
|
|
| 1238 |
|
|
<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> |
| 1239 |
|
|
|
| 1240 |
|
|
<!-- the XXX below is for collapsing this interface onto WorkerGlobalScope so it looks like just one interface - the inheritance is a spec fiction only --> |
| 1241 |
|
|
<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> { |
| 1242 |
|
|
readonly attribute DOMString <a href=#dom-sharedworkerglobalscope-name title=dom-SharedWorkerGlobalScope-name>name</a>; |
| 1243 |
|
|
readonly attribute <span>ApplicationCache</span> <a href=#dom-sharedworkerglobalscope-applicationcache title=dom-SharedWorkerGlobalScope-applicationCache>applicationCache</a>; |
| 1244 |
|
|
attribute <span>EventListener</span> <a href=#handler-sharedworkerglobalscope-onconnect title=handler-SharedWorkerGlobalScope-onconnect>onconnect</a>; |
| 1245 |
|
|
};</span></pre> |
| 1246 |
|
|
|
| 1247 |
|
|
<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 |
| 1248 |
|
|
their global object for each connection.</span><span class=ja-translation lang=ja>共有労働者は、各接続について大域オブジェクトの <code |
| 1249 |
|
|
title=event-WorkerGlobalScope-connect>connect</code> 事象を通じてメッセージ・ポートを受信します。</span></p> |
| 1250 |
|
|
|
| 1251 |
|
|
<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> |
| 1252 |
|
|
attribute must return the value it was assigned when the |
| 1253 |
|
|
<code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object was created by the |
| 1254 |
|
|
"<a href=#run-a-worker>run a worker</a>" algorithm. Its value represents the name |
| 1255 |
|
|
that can be used to obtain a reference to the worker using the |
| 1256 |
|
|
<code><a href=#sharedworker>SharedWorker</a></code> constructor.</span></p> |
| 1257 |
|
|
|
| 1258 |
|
|
<p class="no-ja-translation" data-ja-hash="89036f99dca015c66728e21089b984b0"><span class=en-original lang=en>The following are the <span>event handler attributes</span> (and their corresponding <span title="event handler event type">event handler event types</span>) |
| 1259 |
|
|
that must be supported, as DOM attributes, by objects implementing |
| 1260 |
|
|
the <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> interface:</span></p> |
| 1261 |
|
|
|
| 1262 |
|
|
<table><thead><tr><th class="no-ja-translation" data-ja-hash="c85726f0c6ba202006ec1f912e68aa76"><span class=en-original lang=en><span title="event handler attributes">event handler attribute</span> </span><th class="no-ja-translation" data-ja-hash="3fc98eebba71602c62d8b2fd74645dc9"><span class=en-original lang=en><span>Event handler event type</span> |
| 1263 |
|
|
</span><tbody><tr><td class="no-ja-translation" data-ja-hash="f198960aead81a70dcfd8fe22ce3e5c3"><span class=en-original lang=en><dfn id=handler-sharedworkerglobalscope-onconnect title=handler-SharedWorkerGlobalScope-onconnect><code>onconnect</code></dfn> </span><td class="no-ja-translation" data-ja-hash="01a017777bf3db29f5ec26ca1ad7aced"><span class=en-original lang=en> <code title=event-connect>connect</code> |
| 1264 |
|
|
</span></table><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> |
| 1265 |
|
|
networking model, a shared worker is its own <span>cache |
| 1266 |
|
|
host</span>. The <a href=#run-a-worker>run a worker</a> algorithm takes care of |
| 1267 |
|
|
associating the worker with an <span>application cache</span>.</span></p> |
| 1268 |
|
|
|
| 1269 |
|
|
<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> |
| 1270 |
|
|
returns the <code>ApplicationCache</code> object for the |
| 1271 |
|
|
worker.</span></p><!-- normative conf criteria is in the appcache section |
| 1272 |
|
|
--> |
| 1273 |
|
|
|
| 1274 |
|
|
|
| 1275 |
|
|
<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> |
| 1276 |
|
|
|
| 1277 |
|
|
<p class="no-ja-translation" data-ja-hash="5d71247ae9c7e88e4244d78062ed4760"><span class=en-original lang=en>Both the <span>origin</span> and <span>effective script |
| 1278 |
|
|
origin</span> of scripts running in workers are the |
| 1279 |
|
|
<span>origin</span> of the <span>absolute URL</span> given in that |
| 1280 |
|
|
the worker's <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute |
| 1281 |
|
|
represents.</span></p> |
| 1282 |
|
|
|
| 1283 |
|
|
|
| 1284 |
|
|
<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> |
| 1285 |
|
|
|
| 1286 |
|
|
<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 |
| 1287 |
|
|
obtain its source in Unicode, it must run the following steps:</span></p> |
| 1288 |
|
|
|
| 1289 |
|
|
<ol><li> |
| 1290 |
|
|
|
| 1291 |
|
|
<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> |
| 1292 |
|
|
|
| 1293 |
|
|
</li> |
| 1294 |
|
|
|
| 1295 |
|
|
<li> |
| 1296 |
|
|
|
| 1297 |
|
|
<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 |
| 1298 |
|
|
first one and going down, if the resource has as many or more |
| 1299 |
|
|
bytes available than the number of bytes in the first column, and |
| 1300 |
|
|
the first bytes of the resource match the bytes given in the first |
| 1301 |
|
|
column, then let <var title="">character encoding</var> be the |
| 1302 |
|
|
encoding given in the cell in the second column of that row:</span></p> |
| 1303 |
|
|
|
| 1304 |
|
|
<!-- this table is present in several forms in this file; keep them in sync --> |
| 1305 |
|
|
<table><thead><tr><th class="has-ja-translation" data-ja-hash="cedd90a7eefcd8a4c28ead96824a8c5a"><span class=en-original lang=en>Bytes in Hexadecimal |
| 1306 |
|
|
</span><span class=ja-translation lang=ja>バイトの十六進数表現</span><th class="has-ja-translation" data-ja-hash="169a6f6b44766410bffebf76ff3dcf17"><span class=en-original lang=en>Encoding |
| 1307 |
|
|
</span><span class=ja-translation lang=ja>符号化</span><tbody><!-- nobody uses this |
| 1308 |
|
|
<tr> |
| 1309 |
|
|
<td class="no-ja-translation" data-ja-hash="3b523bf4f5c7a5f0ff3963fdad8049a9"><span class=en-original lang=en>00 00 FE FF |
| 1310 |
|
|
</span><td class="no-ja-translation" data-ja-hash="59e7c7bf45f69d917450ae560a578a4f"><span class=en-original lang=en>UTF-32BE |
| 1311 |
|
|
</span><tr> |
| 1312 |
|
|
<td class="no-ja-translation" data-ja-hash="e25d985f134390f54047573f4a1eca7e"><span class=en-original lang=en>FF FE 00 00 |
| 1313 |
|
|
</span><td class="no-ja-translation" data-ja-hash="83039ece36f32fba267280c8de26edf5"><span class=en-original lang=en>UTF-32LE |
| 1314 |
|
|
--></span><tr><td class="no-ja-translation" data-ja-hash="d9594f5bb7f7387cd1c6d8cb69fb5774"><span class=en-original lang=en>FE FF |
| 1315 |
|
|
</span><td class="no-ja-translation" data-ja-hash="58ee3e3038c435c19dfa106ac8b67d73"><span class=en-original lang=en>UTF-16BE |
| 1316 |
|
|
</span><tr><td class="no-ja-translation" data-ja-hash="3d748bc0fd7caa28cb9bd697c840f46f"><span class=en-original lang=en>FF FE |
| 1317 |
|
|
</span><td class="no-ja-translation" data-ja-hash="600ebb464ff7e548ff5a09c2c12f551b"><span class=en-original lang=en>UTF-16LE |
| 1318 |
|
|
</span><tr><td class="no-ja-translation" data-ja-hash="5d1b4e645efa35016b709ffbd308e29d"><span class=en-original lang=en>EF BB BF |
| 1319 |
|
|
</span><td class="no-ja-translation" data-ja-hash="ae3b3df9970b49b6523e608759bc957d"><span class=en-original lang=en>UTF-8 |
| 1320 |
|
|
<!-- nobody uses this |
| 1321 |
|
|
--></span><!--<tr> |
| 1322 |
|
|
<td class="no-ja-translation" data-ja-hash="7d1cd1d79b5ca7151c2153c016bc5c49"><span class=en-original lang=en>DD 73 66 73 |
| 1323 |
|
|
</span><td class="no-ja-translation" data-ja-hash="48ad579645de9a10a9a6f78fab81fb65"><span class=en-original lang=en>UTF-EBCDIC |
| 1324 |
|
|
--> |
| 1325 |
|
|
</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 |
| 1326 |
|
|
(BOMs).</span></p> |
| 1327 |
|
|
|
| 1328 |
|
|
</li> |
| 1329 |
|
|
|
| 1330 |
|
|
<li> |
| 1331 |
|
|
|
| 1332 |
|
|
<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 |
| 1333 |
|
|
encoding from a Content-Type</span> to the resource's <span title=Content-Type>Content Type metadata</span>; if this returns |
| 1334 |
|
|
an encoding, and the user agent supports that encoding, then let |
| 1335 |
|
|
<var title="">character encoding</var> be that encoding.</span></p> |
| 1336 |
|
|
|
| 1337 |
|
|
</li> |
| 1338 |
|
|
|
| 1339 |
|
|
<li> |
| 1340 |
|
|
|
| 1341 |
|
|
<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 |
| 1342 |
|
|
encoding</var> be UTF-8.</span></p> |
| 1343 |
|
|
|
| 1344 |
|
|
</li> |
| 1345 |
|
|
|
| 1346 |
|
|
<li> |
| 1347 |
|
|
|
| 1348 |
|
|
<p class="no-ja-translation" data-ja-hash="178b2c0b2c79b7e38b80e13f0fac6983"><span class=en-original lang=en>Convert the resource to Unicode using the character encoding |
| 1349 |
|
|
given by <var title="">character encoding</var>.</span></p> |
| 1350 |
|
|
|
| 1351 |
|
|
<p class="no-ja-translation" data-ja-hash="ee427dae6dec0a6bf731b3069f9a4abd"><span class=en-original lang=en>Return the text that is so obtained.</span></p> |
| 1352 |
|
|
|
| 1353 |
|
|
</li> |
| 1354 |
|
|
|
| 1355 |
|
|
</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> |
| 1356 |
|
|
|
| 1357 |
|
|
<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 |
| 1358 |
|
|
<span>event loop</span>. This <span>event loop</span> has no |
| 1359 |
|
|
associated <span>browsing context</span>, and its <span title="task |
| 1360 |
|
|
queue">task queues</span> only have events, callbacks, and |
| 1361 |
|
|
networking activity as <span title=concept-task>tasks</span>. The |
| 1362 |
|
|
processing model of these <span title="event loop">event |
| 1363 |
|
|
loops</span> is defined below in the <a href=#run-a-worker>run a worker</a> |
| 1364 |
|
|
algorithm.</span></p> |
| 1365 |
|
|
|
| 1366 |
|
|
<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 |
| 1367 |
|
|
initially be false, but which can get set to true by the algorithms |
| 1368 |
|
|
in the processing model section below.</span></p> |
| 1369 |
|
|
|
| 1370 |
|
|
<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 |
| 1371 |
|
|
true, the <span>event loop</span>'s <span title="task queue">task |
| 1372 |
|
|
queues</span> must discard any further <span title=concept-task>tasks</span> that would be added to them (tasks |
| 1373 |
|
|
already on the queue are unaffected unless otherwise |
| 1374 |
|
|
specified). Effectively, once the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is true, |
| 1375 |
|
|
timers stop firing, notifications for all pending asynchronous |
| 1376 |
|
|
operations are dropped, etc.</span></p> |
| 1377 |
|
|
|
| 1378 |
|
|
|
| 1379 |
|
|
<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> |
| 1380 |
|
|
|
| 1381 |
|
|
<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 |
| 1382 |
|
|
<code>MessagePort</code> objects.</span><span class=ja-translation lang=ja>労働者は、メッセージ通信路とその <code>MessagePort</code> |
| 1383 |
|
|
オブジェクトを通じて、他の労働者や閲覧文脈と通信します。</span></p> |
| 1384 |
|
|
|
| 1385 |
|
|
<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 |
| 1386 |
|
|
scope</var> has a list of <dfn id="the-worker's-ports-0">the worker's ports</dfn>, which |
| 1387 |
|
|
consists of all the <code>MessagePort</code> objects that are |
| 1388 |
|
|
entangled with another port and that have one (but only one) port |
| 1389 |
|
|
owned by <var title="">worker global scope</var>. This list includes |
| 1390 |
|
|
<!--all the <code>MessagePort</code> objects that are in events |
| 1391 |
|
|
pending in the <span>event loop</span>, as well as (commented out |
| 1392 |
|
|
because in practice it makes no difference either way as far as I |
| 1393 |
|
|
can tell, and it would be hard to strictly implement since these |
| 1394 |
|
|
ports might not yet be across the thread boundary)--> the implicit |
| 1395 |
|
|
<code>MessagePort</code> in the case of <a href=#dedicatedworkerglobalscope title=DedicatedWorkerGlobalScope>dedicated workers</a>.</span></p> |
| 1396 |
|
|
|
| 1397 |
|
|
<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 |
| 1398 |
|
|
either:</span></p> |
| 1399 |
|
|
|
| 1400 |
|
|
<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 |
| 1401 |
|
|
by the worker was entangled with a <code>MessagePort</code> <var title="">p</var> whose owner is a <code>Window</code> object whose |
| 1402 |
|
|
<span>active document</span> is the <code>Document</code> that was |
| 1403 |
|
|
that <span>browsing context</span>'s <span>active document</span> |
| 1404 |
|
|
when <var title="">p</var> was created, and that |
| 1405 |
|
|
<code>Document</code> is <span>fully active</span>, or</span></li> |
| 1406 |
|
|
|
| 1407 |
|
|
<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 |
| 1408 |
|
|
by the worker was entangled with a <code>MessagePort</code> owned |
| 1409 |
|
|
by another worker that is currently a <a href=#permissible-worker>permissible |
| 1410 |
|
|
worker</a>.</span></li> |
| 1411 |
|
|
|
| 1412 |
|
|
</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 |
| 1413 |
|
|
either:</span></p> |
| 1414 |
|
|
|
| 1415 |
|
|
<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 |
| 1416 |
|
|
connections, and is a <a href=#permissible-worker>permissible worker</a>, or</span></li> |
| 1417 |
|
|
|
| 1418 |
|
|
<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 |
| 1419 |
|
|
past or present owned a <code>MessagePort</code> that was entangled |
| 1420 |
|
|
with a <code>MessagePort</code> owned by this worker.</span></li> |
| 1421 |
|
|
|
| 1422 |
|
|
</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: |
| 1423 |
|
|
|
| 1424 |
|
|
</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> |
| 1425 |
|
|
|
| 1426 |
|
|
<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 |
| 1427 |
|
|
entangled with a <code>MessagePort</code> <var title="">p</var> |
| 1428 |
|
|
whose owner is a <code>Window</code> object whose <span>active |
| 1429 |
|
|
document</span> is the <code>Document</code> that was that |
| 1430 |
|
|
<span>browsing context</span>'s <span>active document</span> when |
| 1431 |
|
|
that <code>MessagePort</code> <var title="">p</var> was created, |
| 1432 |
|
|
and that <code>Document</code> is <span>fully active</span>, |
| 1433 |
|
|
or</span></li> |
| 1434 |
|
|
|
| 1435 |
|
|
<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 |
| 1436 |
|
|
entangled <code>MessagePort</code> owned by a |
| 1437 |
|
|
<code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object that is itself an |
| 1438 |
|
|
<a href=#active-needed-worker>active needed worker</a>.</span></li> |
| 1439 |
|
|
|
| 1440 |
|
|
</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 |
| 1441 |
|
|
not an <a href=#active-needed-worker>active needed worker</a> but either:</span></p> |
| 1442 |
|
|
|
| 1443 |
|
|
<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 |
| 1444 |
|
|
entangled <code>MessagePort</code> owned by a <code>Window</code> |
| 1445 |
|
|
object, or</span></li> |
| 1446 |
|
|
|
| 1447 |
|
|
<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 |
| 1448 |
|
|
entangled <code>MessagePort</code> owned by a |
| 1449 |
|
|
<code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object that is itself a <span>needed |
| 1450 |
|
|
worker</span>.</span></li> |
| 1451 |
|
|
|
| 1452 |
|
|
</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> |
| 1453 |
|
|
|
| 1454 |
|
|
<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 |
| 1455 |
|
|
<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 |
| 1456 |
|
|
steps:</span></p> |
| 1457 |
|
|
|
| 1458 |
|
|
<ol><li> |
| 1459 |
|
|
|
| 1460 |
|
|
<p class="no-ja-translation" data-ja-hash="699e58187adc9ee37990500a66c83a8f"><span class=en-original lang=en>Create a completely separate and parallel execution environment |
| 1461 |
|
|
(i.e. a separate thread or process or equivalent construct), and |
| 1462 |
|
|
run the rest of these steps asynchronously in that context.</span></p> |
| 1463 |
|
|
|
| 1464 |
|
|
</li> |
| 1465 |
|
|
|
| 1466 |
|
|
<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 |
| 1467 |
|
|
<code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object (i.e. the worker is a |
| 1468 |
|
|
shared worker), and there are any <span title="relevant application |
| 1469 |
|
|
cache">relevant application caches</span> that are identified by a |
| 1470 |
|
|
manifest URL with the <span>same origin</span> as <var title="">url</var> and that have <var title="">url</var> as one of |
| 1471 |
|
|
their entries, <em>not</em> excluding entries marked as <span title=concept-appcache-foreign>foreign</span>, then associate the |
| 1472 |
|
|
<var title="">worker global scope</var> with the <span title=concept-appcache-selection>most appropriate application |
| 1473 |
|
|
cache</span> of those that match.</span></li> |
| 1474 |
|
|
|
| 1475 |
|
|
<li> |
| 1476 |
|
|
|
| 1477 |
|
|
<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> |
| 1478 |
|
|
|
| 1479 |
|
|
<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 |
| 1480 |
|
|
<code><a href=#sharedworker>SharedWorker</a></code> object associated with <var title="">worker global scope</var>, <span>queue a task</span> to |
| 1481 |
|
|
<span>fire a simple event</span> called <code title=event-error>error</code> at that object. Abort these |
| 1482 |
|
|
steps.</span></p> |
| 1483 |
|
|
|
| 1484 |
|
|
<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 |
| 1485 |
|
|
resource">decode the script resource</a> to obtain its <var title="">source</var>.</span></p> |
| 1486 |
|
|
|
| 1487 |
|
|
<p class="no-ja-translation" data-ja-hash="c880bce97c5a1aadccd8989fc4ec8551"><span class=en-original lang=en>Let <var title="">language</var> be JavaScript.</span></p> |
| 1488 |
|
|
|
| 1489 |
|
|
<p class="note has-ja-translation" data-ja-hash="5ba762159d9de3f8bd326fe0bcfac206"><span class=en-original lang=en>As with <code>script</code> elements, the MIME |
| 1490 |
|
|
type of the script is ignored. Unlike with <code>script</code> |
| 1491 |
|
|
elements, there is no way to override the type. It's always |
| 1492 |
|
|
assumed to be JavaScript.</span><span class=ja-translation lang=ja><code>script</code> 要素と同様に、スクリプトの MIME 型は無視します。 |
| 1493 |
|
|
<code>script</code> 要素とは異なり、 |
| 1494 |
|
|
型を上書きする方法はありません。スクリプトは常に JavaScript |
| 1495 |
|
|
と仮定します。</span></p> <!-- XXX people will complain about |
| 1496 |
|
|
this. I guess we might want to examine the MIME type... --> |
| 1497 |
|
|
|
| 1498 |
|
|
</li> |
| 1499 |
|
|
|
| 1500 |
|
|
<li> |
| 1501 |
|
|
|
| 1502 |
|
|
<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 |
| 1503 |
|
|
created, as follows.</span></p> |
| 1504 |
|
|
|
| 1505 |
|
|
<p class="no-ja-translation" data-ja-hash="2dfcd0f76cde607de6cc88d70f390825"><span class=en-original lang=en>Create a new <span>script execution environment</span> |
| 1506 |
|
|
set up as appropriate for the scripting language <var title="">language</var>.</span></p> |
| 1507 |
|
|
|
| 1508 |
|
|
<p class="no-ja-translation" data-ja-hash="fdf8b5f9ba18a31a8f48670142f51442"><span class=en-original lang=en>Parse/compile/initialize <var title="">source</var> using that |
| 1509 |
|
|
<span>script execution environment</span>, as appropriate for <var title="">language</var>, and thus obtain a <span>list of code |
| 1510 |
|
|
entry-points</span>; set the <i>initial code entry-point</i> to |
| 1511 |
|
|
the entry-point for any executable code to be immediately run.</span></p> |
| 1512 |
|
|
|
| 1513 |
|
|
<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> |
| 1514 |
|
|
|
| 1515 |
|
|
<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> |
| 1516 |
|
|
|
| 1517 |
|
|
<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 |
| 1518 |
|
|
UTF-8. (This is just used for encoding non-ASCII characters in the |
| 1519 |
|
|
query component of URLs.)</span></p> |
| 1520 |
|
|
|
| 1521 |
|
|
<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> |
| 1522 |
|
|
|
| 1523 |
|
|
<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> |
| 1524 |
|
|
|
| 1525 |
|
|
</li> |
| 1526 |
|
|
|
| 1527 |
|
|
<li> |
| 1528 |
|
|
|
| 1529 |
|
|
<p class="no-ja-translation" data-ja-hash="daa2376af7239911c9c5816ba5177550"><span class=en-original lang=en><strong>Closing orphan workers</strong>: Start monitoring the |
| 1530 |
|
|
worker such that as soon as it stops being either an <a href=#active-needed-worker>active |
| 1531 |
|
|
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 |
| 1532 |
|
|
to true and <span title="queue a task">a task is queued</span> to |
| 1533 |
|
|
<span>fire a simple event</span> called <code title=event-close>close</code> at <var title="">worker global |
| 1534 |
|
|
scope</var>.</span></p> |
| 1535 |
|
|
|
| 1536 |
|
|
</li> |
| 1537 |
|
|
|
| 1538 |
|
|
<li> |
| 1539 |
|
|
|
| 1540 |
|
|
<p class="no-ja-translation" data-ja-hash="24a8fa04f32239e0dafc1e98e466d6b4"><span class=en-original lang=en><strong>Suspending workers</strong>: Start monitoring the |
| 1541 |
|
|
worker, such that whenever <var title="">worker global |
| 1542 |
|
|
scope</var>'s <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is false |
| 1543 |
|
|
and the worker is a <a href=#suspendable-worker>suspendable worker</a>, the user |
| 1544 |
|
|
agent suspends execution of script in that worker until such time |
| 1545 |
|
|
as either the <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag switches |
| 1546 |
|
|
to true or the worker stops being a <a href=#suspendable-worker>suspendable |
| 1547 |
|
|
worker</a>.</span></p> |
| 1548 |
|
|
|
| 1549 |
|
|
</li> |
| 1550 |
|
|
|
| 1551 |
|
|
<li> |
| 1552 |
|
|
|
| 1553 |
|
|
<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 |
| 1554 |
|
|
<span title=concept-script>script</span>'s <i>initial code |
| 1555 |
|
|
entry-point</i>, and let that run until it either returns, fails |
| 1556 |
|
|
to catch an exception, or gets prematurely aborted by the |
| 1557 |
|
|
"<a href=#kill-a-worker>kill a worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>" |
| 1558 |
|
|
algorithms defined below.</span></p> |
| 1559 |
|
|
|
| 1560 |
|
|
<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 |
| 1561 |
|
|
worker</a>" algorithm, then that same algorithm will cause |
| 1562 |
|
|
there to only be a single <span title=concept-task>task</span> |
| 1563 |
|
|
in the <span>event loop</span> at the next step, namely the task |
| 1564 |
|
|
for the <code title=message-close>close</code> event. The |
| 1565 |
|
|
"<a href=#terminate-a-worker>terminate a worker</a>" algorithm removes all the |
| 1566 |
|
|
events.</span></p> |
| 1567 |
|
|
|
| 1568 |
|
|
</li> |
| 1569 |
|
|
|
| 1570 |
|
|
<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 |
| 1571 |
|
|
<code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the worker is |
| 1572 |
|
|
a dedicated worker), then open the <span>port message queue</span> |
| 1573 |
|
|
of the worker's implicit port.</span></li> |
| 1574 |
|
|
|
| 1575 |
|
|
<li> |
| 1576 |
|
|
|
| 1577 |
|
|
<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 |
| 1578 |
|
|
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 |
| 1579 |
|
|
to true.</span></p> |
| 1580 |
|
|
|
| 1581 |
|
|
</li> |
| 1582 |
|
|
|
| 1583 |
|
|
<li> |
| 1584 |
|
|
|
| 1585 |
|
|
<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 |
| 1586 |
|
|
<span title="task queue">task queues</span>, if any. The user |
| 1587 |
|
|
agent may pick any <span>task queue</span>.</span></p> |
| 1588 |
|
|
|
| 1589 |
|
|
<p class="note no-ja-translation" data-ja-hash="2a401c207ed88f5206b2eb8a90fc91a6"><span class=en-original lang=en>The handling of events or the execution of |
| 1590 |
|
|
callbacks might get prematurely aborted by the "<a href=#kill-a-worker>kill a |
| 1591 |
|
|
worker</a>" or "<a href=#terminate-a-worker>terminate a worker</a>" algorithms |
| 1592 |
|
|
defined below.</span></p> |
| 1593 |
|
|
|
| 1594 |
|
|
</li> |
| 1595 |
|
|
|
| 1596 |
|
|
<li> |
| 1597 |
|
|
|
| 1598 |
|
|
<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 |
| 1599 |
|
|
<span>task queue</span>.</span></p> |
| 1600 |
|
|
|
| 1601 |
|
|
</li> |
| 1602 |
|
|
|
| 1603 |
|
|
<li> |
| 1604 |
|
|
|
| 1605 |
|
|
<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 |
| 1606 |
|
|
<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 |
| 1607 |
|
|
to false, then jump back to the step above labeled <i>event |
| 1608 |
|
|
loop</i>.</span></p> |
| 1609 |
|
|
|
| 1610 |
|
|
</li> |
| 1611 |
|
|
|
| 1612 |
|
|
<li> |
| 1613 |
|
|
|
| 1614 |
|
|
<p class="no-ja-translation" data-ja-hash="76aff645037fb93242c0b3e0ed29b90b"><span class=en-original lang=en>Freeze the <span>script group</span>.</span></p> |
| 1615 |
|
|
|
| 1616 |
|
|
<p class="note no-ja-translation" data-ja-hash="d32bd424c711e966967069f368ca26ad"><span class=en-original lang=en>This kills timers, database transactions, etc.</span></p> |
| 1617 |
|
|
|
| 1618 |
|
|
</li> |
| 1619 |
|
|
|
| 1620 |
|
|
<li> |
| 1621 |
|
|
|
| 1622 |
|
|
<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> |
| 1623 |
|
|
object associated with <var title="">worker global scope</var>, |
| 1624 |
|
|
<span>queue a task</span> to <span>fire a simple event</span> |
| 1625 |
|
|
called <code title=event-close>close</code> at that object.</span></p> |
| 1626 |
|
|
|
| 1627 |
|
|
</li> |
| 1628 |
|
|
|
| 1629 |
|
|
</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 |
| 1630 |
|
|
run the following steps in parallel with the worker's main loop (the |
| 1631 |
|
|
"<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p> |
| 1632 |
|
|
|
| 1633 |
|
|
<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 |
| 1634 |
|
|
<a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag is |
| 1635 |
|
|
false, <span>queue a task</span> to <span>fire a simple |
| 1636 |
|
|
event</span> called <code title=event-close>close</code> at the |
| 1637 |
|
|
worker's <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object.</span></li> |
| 1638 |
|
|
|
| 1639 |
|
|
<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 |
| 1640 |
|
|
true.</span></li> |
| 1641 |
|
|
|
| 1642 |
|
|
<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 |
| 1643 |
|
|
a worker</a>" processing model defined above immediately starts |
| 1644 |
|
|
running event listeners registered for the <code title=event-close>close</code> event, this time should not be |
| 1645 |
|
|
zero — the idea is that the <code title=event-close>close</code> event can be used to clean up |
| 1646 |
|
|
when shutting down unexpectedly.</span></li> |
| 1647 |
|
|
|
| 1648 |
|
|
<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> |
| 1649 |
|
|
queued in the <span>event loop</span>'s <span title="task |
| 1650 |
|
|
queue">task queues</span> other than the <code title=event-close>close</code> event that this algorithm just |
| 1651 |
|
|
added, discard them without processing them.</span></li> |
| 1652 |
|
|
|
| 1653 |
|
|
<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 |
| 1654 |
|
|
this algorithm just queued hasn't yet been dispatched, then abort |
| 1655 |
|
|
the script currently running in the worker.</span></li> |
| 1656 |
|
|
|
| 1657 |
|
|
<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> |
| 1658 |
|
|
|
| 1659 |
|
|
<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 |
| 1660 |
|
|
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>労働者中で現在走っているスクリプトを停止します |
| 1661 |
|
|
(何かスクリプトが走っているとすれば、それは <code |
| 1662 |
|
|
title=event-close>close</code> |
| 1663 |
|
|
事象の取扱器のはずです)。</span></li> |
| 1664 |
|
|
|
| 1665 |
|
|
</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>" |
| 1666 |
|
|
processing model on a worker at any time, e.g. in response to user |
| 1667 |
|
|
requests, in response to CPU quota management, or when a worker |
| 1668 |
|
|
stops being an <a href=#active-needed-worker>active needed worker</a> if the worker |
| 1669 |
|
|
continues executing even after its <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag was |
| 1670 |
|
|
set to true.</span></p> |
| 1671 |
|
|
|
| 1672 |
|
|
<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 |
| 1673 |
|
|
the following steps in parallel with the worker's main loop (the |
| 1674 |
|
|
"<a href=#run-a-worker>run a worker</a>" processing model defined above):</span></p> |
| 1675 |
|
|
|
| 1676 |
|
|
<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 |
| 1677 |
|
|
<a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> flag to |
| 1678 |
|
|
true.</span></li> |
| 1679 |
|
|
|
| 1680 |
|
|
<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> |
| 1681 |
|
|
queued in the <span>event loop</span>'s <span title="task |
| 1682 |
|
|
queue">task queues</span>, discard them without processing |
| 1683 |
|
|
them.</span></li> |
| 1684 |
|
|
|
| 1685 |
|
|
<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> |
| 1686 |
|
|
|
| 1687 |
|
|
<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 |
| 1688 |
|
|
actually a <code><a href=#dedicatedworkerglobalscope>DedicatedWorkerGlobalScope</a></code> object (i.e. the |
| 1689 |
|
|
worker is a dedicated worker), then empty the <span>port message |
| 1690 |
|
|
queue</span> of the port that the worker's implicit port is |
| 1691 |
|
|
entangled with.</span></li> |
| 1692 |
|
|
|
| 1693 |
|
|
</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> |
| 1694 |
|
|
|
| 1695 |
|
|
<p class="no-ja-translation" data-ja-hash="86535274ab645bc941f7ca6e8f05e9c9"><span class=en-original lang=en>Whenever a runtime script error occurs in one of the worker's |
| 1696 |
|
|
scripts, if the error did not occur while handling a previous script |
| 1697 |
|
|
error, the user agent must <span>queue a task</span> to <span>fire a |
| 1698 |
|
|
simple event</span> called <code title=event-error>error</code> at |
| 1699 |
|
|
the <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object.</span></p> |
| 1700 |
|
|
|
| 1701 |
|
|
<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 |
| 1702 |
|
|
handled</i> afterwards, or if the error occured while handling a |
| 1703 |
|
|
previous script error, the error should be reported to the user.</span></p> |
| 1704 |
|
|
|
| 1705 |
|
|
<p class="no-ja-translation" data-ja-hash="a90e14079ee08b7ca56333b774514fe2"><span class=en-original lang=en>For dedicated workers, if the error is still <i title="">not |
| 1706 |
|
|
handled</i> afterwards, or if the error occured while handling a |
| 1707 |
|
|
previous script error, the user agent must further <span>queue a |
| 1708 |
|
|
task</span> to <a href=#fire-a-worker-error-event>fire a worker error event</a> at the |
| 1709 |
|
|
<code><a href=#worker>Worker</a></code> object associated with the worker.</span></p> |
| 1710 |
|
|
|
| 1711 |
|
|
<p class="no-ja-translation" data-ja-hash="c96676fcc4ab90893eca070f70c76249"><span class=en-original lang=en>When the user agent is to <dfn id=fire-a-worker-error-event>fire a worker error event</dfn> at |
| 1712 |
|
|
a <code><a href=#worker>Worker</a></code> object, it must dispatch an event that uses |
| 1713 |
|
|
the <code><a href=#errorevent>ErrorEvent</a></code> interface, with the name <code title=event-error>error</code>, that doesn't bubble and is |
| 1714 |
|
|
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 |
| 1715 |
|
|
appropriately. The default action of this event depends on whether |
| 1716 |
|
|
the <code><a href=#worker>Worker</a></code> object is itself in a worker. If it is, and |
| 1717 |
|
|
that worker is also a dedicated worker, then the user agent must |
| 1718 |
|
|
again <span>queue a task</span> to <a href=#fire-a-worker-error-event>fire a worker error |
| 1719 |
|
|
event</a> at the <code><a href=#worker>Worker</a></code> object associated with |
| 1720 |
|
|
<em>that</em> worker. Otherwise, then the error should be reported |
| 1721 |
|
|
to the user.</span></p> |
| 1722 |
|
|
|
| 1723 |
|
|
<hr><pre class="idl no-ja-translation" data-ja-hash="b54be6bb73d5cd3a8a7bdcf79caf2a73"><span class=en-original lang=en>interface <dfn id=errorevent>ErrorEvent</dfn> : Event { |
| 1724 |
|
|
readonly attribute DOMObject <a href=#dom-errorevent-message title=dom-ErrorEvent-message>message</a>; |
| 1725 |
|
|
readonly attribute DOMObject <a href=#dom-errorevent-filename title=dom-ErrorEvent-filename>filename</a>; |
| 1726 |
|
|
readonly attribute unsigned long <a href=#dom-errorevent-lineno title=dom-ErrorEvent-lineno>lineno</a>; |
| 1727 |
|
|
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); |
| 1728 |
|
|
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); |
| 1729 |
|
|
};</span></pre> |
| 1730 |
|
|
|
| 1731 |
|
|
<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> |
| 1732 |
|
|
and <dfn id="en-dom-errorevent-initerroreventns" title=dom-ErrorEvent-initErrorEventNS><code>initErrorEventNS()</code></dfn> |
| 1733 |
|
|
methods must initialize the event in a manner analogous to the |
| 1734 |
|
|
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 |
| 1735 |
|
|
title=dom-ErrorEvent-initErrorEvent><code>initErrorEvent()</code></dfn> |
| 1736 |
|
|
メソッドと <dfn id=dom-errorevent-initerroreventns |
| 1737 |
|
|
title=dom-ErrorEvent-initErrorEventNS><code>initMessageEventNS()</code></dfn> |
| 1738 |
|
|
メソッドは、 DOM3 事象界面の似たような名前のメソッドと同じような方法で事象を初期化しなければ<em class=rfc2119 title="MUST">なりません</em>。 |
| 1739 |
|
|
<a |
| 1740 |
|
|
href=#refsDOM3EVENTS>[DOM3EVENTS]</a></span></p> |
| 1741 |
|
|
|
| 1742 |
|
|
<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> |
| 1743 |
|
|
attribute represents the error message.</span></p> |
| 1744 |
|
|
|
| 1745 |
|
|
<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> |
| 1746 |
|
|
attribute represents the <span>absolute URL</span> of the script in |
| 1747 |
|
|
which the error originally occured.</span></p> |
| 1748 |
|
|
|
| 1749 |
|
|
<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> |
| 1750 |
|
|
attribute represents the line number where the error occured in the |
| 1751 |
|
|
script.</span></p> |
| 1752 |
|
|
|
| 1753 |
|
|
|
| 1754 |
|
|
|
| 1755 |
|
|
<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> |
| 1756 |
|
|
|
| 1757 |
|
|
<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> |
| 1758 |
|
|
|
| 1759 |
|
|
<pre class="idl no-ja-translation" data-ja-hash="2cc701fd05739f7b49c218a862b9aebd"><span class=en-original lang=en>interface <dfn id=abstractworker>AbstractWorker</dfn> { |
| 1760 |
|
|
attribute <span>EventListener</span> <a href=#handler-abstractworker-onerror title=handler-AbstractWorker-onerror>onerror</a>; |
| 1761 |
|
|
attribute <span>EventListener</span> <a href=#handler-abstractworker-onclose title=handler-AbstractWorker-onclose>onclose</a>; |
| 1762 |
|
|
};</span></pre> |
| 1763 |
|
|
|
| 1764 |
|
|
<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 |
| 1765 |
|
|
must also implement the <code>EventTarget</code> interface.</span></p> |
| 1766 |
|
|
|
| 1767 |
|
|
<p class="no-ja-translation" data-ja-hash="94f7748c361254422af5d1ae954849ee"><span class=en-original lang=en>The following are the <span>event handler attributes</span> (and their corresponding <span title="event handler event type">event handler event types</span>) |
| 1768 |
|
|
that must be supported, as DOM attributes, by objects implementing |
| 1769 |
|
|
the <code><a href=#abstractworker>AbstractWorker</a></code> interface:</span></p> |
| 1770 |
|
|
|
| 1771 |
|
|
<table><thead><tr><th class="no-ja-translation" data-ja-hash="c85726f0c6ba202006ec1f912e68aa76"><span class=en-original lang=en><span title="event handler attributes">event handler attribute</span> </span><th class="no-ja-translation" data-ja-hash="3fc98eebba71602c62d8b2fd74645dc9"><span class=en-original lang=en><span>Event handler event type</span> |
| 1772 |
|
|
</span><tbody><tr><td class="no-ja-translation" data-ja-hash="797655c7ba76af81be91c1f52bf92e5d"><span class=en-original lang=en><dfn id=handler-abstractworker-onerror title=handler-AbstractWorker-onerror><code>onerror</code></dfn> </span><td class="no-ja-translation" data-ja-hash="bf1b78c16e7c3a3de662d83f487bffff"><span class=en-original lang=en> <code title=event-error>error</code> |
| 1773 |
|
|
</span><tr><td 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><td class="no-ja-translation" data-ja-hash="2f9d2bb012a2644f743804c1c46e668e"><span class=en-original lang=en> <code title=event-close>close</code> |
| 1774 |
|
|
</span></table><h4 id=dedicated-workers-and-the-worker-interface class="no-ja-translation" data-ja-hash="4d0010617afd55731512f81d11e29921"><span class=en-original lang=en><span class=secno>4.8.2 </span>Dedicated workers and the <code><a href=#worker>Worker</a></code> interface</span></h4> |
| 1775 |
|
|
|
| 1776 |
|
|
<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)] |
| 1777 |
|
|
interface <dfn id=worker>Worker</dfn> : <a href=#abstractworker>AbstractWorker</a> { |
| 1778 |
|
|
void <a href=#dom-worker-terminate title=dom-Worker-terminate>terminate</a>(); |
| 1779 |
|
|
|
| 1780 |
|
|
void <a href=#dom-worker-postmessage title=dom-Worker-postMessage>postMessage</a>(in any message, [Optional] in <span>MessagePortArray</span> ports);<!-- |
| 1781 |
|
|
<span>MessagePort</span> <span title="dom-Worker-startConversation">startConversation</span>(in any message);--> |
| 1782 |
|
|
attribute <span>EventListener</span> <a href=#handler-worker-onmessage title=handler-Worker-onmessage>onmessage</a>; |
| 1783 |
|
|
};</span></pre> |
| 1784 |
|
|
|
| 1785 |
|
|
<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, |
| 1786 |
|
|
when invoked, must cause the "<a href=#terminate-a-worker>terminate a worker</a>" |
| 1787 |
|
|
algorithm to be run on the worker with with the object is |
| 1788 |
|
|
associated.</span></p> |
| 1789 |
|
|
|
| 1790 |
|
|
<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 |
| 1791 |
|
|
<code>MessagePort</code> associated with them. This port is part of |
| 1792 |
|
|
a channel that is set up when the worker is created, but it is not |
| 1793 |
|
|
exposed. This object must never be garbage collected before the |
| 1794 |
|
|
<code><a href=#worker>Worker</a></code> object.</span></p> |
| 1795 |
|
|
|
| 1796 |
|
|
<p class="no-ja-translation" data-ja-hash="3347b0248a16085b3e8a073aed81f1d8"><span class=en-original lang=en>All messages received by that port must immediately be retargeted |
| 1797 |
|
|
at the <code><a href=#worker>Worker</a></code> object.</span></p> |
| 1798 |
|
|
|
| 1799 |
|
|
<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><!-- |
| 1800 |
|
|
and <dfn |
| 1801 |
|
|
title="dom-Worker-startConversation"><code>startConversation()</code></dfn>--> |
| 1802 |
|
|
method<!--s (startConversation)--> on <code><a href=#worker>Worker</a></code> objects |
| 1803 |
|
|
must act as if, when invoked, it<!--/they (startConversation)--> |
| 1804 |
|
|
immediately invoked the method of the same name on the port, with |
| 1805 |
|
|
the same arguments, and returned the same return value.</span></p> |
| 1806 |
|
|
|
| 1807 |
|
|
<p class="no-ja-translation" data-ja-hash="e9b0de1981a1ae0a443580d68868219a"><span class=en-original lang=en>The following are the <span>event handler attributes</span> (and their corresponding <span title="event handler event type">event handler event types</span>) |
| 1808 |
|
|
that must be supported, as DOM attributes, by objects implementing |
| 1809 |
|
|
the <code><a href=#worker>Worker</a></code> interface:</span></p> |
| 1810 |
|
|
|
| 1811 |
|
|
<table><thead><tr><th class="no-ja-translation" data-ja-hash="c85726f0c6ba202006ec1f912e68aa76"><span class=en-original lang=en><span title="event handler attributes">event handler attribute</span> </span><th class="no-ja-translation" data-ja-hash="3fc98eebba71602c62d8b2fd74645dc9"><span class=en-original lang=en><span>Event handler event type</span> |
| 1812 |
|
|
</span><tbody><tr><td class="no-ja-translation" data-ja-hash="936f67c1111af9460db35858624e3ce9"><span class=en-original lang=en><dfn id=handler-worker-onmessage title=handler-Worker-onmessage><code>onmessage</code></dfn> </span><td class="no-ja-translation" data-ja-hash="fe07e2527bf13c457386ab4807af84a0"><span class=en-original lang=en> <code title=event-message>message</code> |
| 1813 |
|
|
</span></table><hr><p class="no-ja-translation" data-ja-hash="071022f5c10c547e44e7e3a998659333"><span class=en-original lang=en>When the <dfn id=dom-worker title=dom-Worker><code>Worker(<var title="">scriptURL</var>)</code></dfn> constructor is invoked, the |
| 1814 |
|
|
user agent must run the following steps:</span></p> |
| 1815 |
|
|
|
| 1816 |
|
|
<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 |
| 1817 |
|
|
title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span></li> |
| 1818 |
|
|
|
| 1819 |
|
|
<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> |
| 1820 |
|
|
exception.</span><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code> |
| 1821 |
|
|
例外を投げます。</span></li> |
| 1822 |
|
|
|
| 1823 |
|
|
<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 |
| 1824 |
|
|
URL</span> is not the <span title="same origin">same</span> as the |
| 1825 |
|
|
origin of the script that invoked the constructor, then throw a |
| 1826 |
|
|
<span>security exception</span>.</span></li> |
| 1827 |
|
|
|
| 1828 |
|
|
<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> |
| 1829 |
|
|
object</span>. Let <var title="">worker global scope</var> be this |
| 1830 |
|
|
new object.</span></li> |
| 1831 |
|
|
|
| 1832 |
|
|
<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 |
| 1833 |
|
|
<var title="">worker global scope</var>. Let <var title="">worker</var> be this new object.</span></li> |
| 1834 |
|
|
|
| 1835 |
|
|
<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 |
| 1836 |
|
|
by the <span>script execution context</span> of the script that |
| 1837 |
|
|
invoked the method. Let this be the <var title="">outside |
| 1838 |
|
|
port</var>.</span></li> |
| 1839 |
|
|
|
| 1840 |
|
|
<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 |
| 1841 |
|
|
title="">worker</var> に関連付けます。</span></li> |
| 1842 |
|
|
|
| 1843 |
|
|
<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 |
| 1844 |
|
|
by <var title="">worker global scope</var>. Let <var title="">inside port</var> be this new object.</span></li> |
| 1845 |
|
|
|
| 1846 |
|
|
<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> |
| 1847 |
|
|
|
| 1848 |
|
|
<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 |
| 1849 |
|
|
<var title="">inside port</var>.</span></li> |
| 1850 |
|
|
|
| 1851 |
|
|
<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 |
| 1852 |
|
|
steps asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、以降の段階を非同期に走らせます。</span></li> |
| 1853 |
|
|
|
| 1854 |
|
|
<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 |
| 1855 |
|
|
queue</span>.</span><span class=ja-translation lang=ja><var title="">inside port</var> の<span>ポート・メッセージ待ち行列</span>を開きます。</span></li> |
| 1856 |
|
|
|
| 1857 |
|
|
<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 |
| 1858 |
|
|
queue</span>.</span><span class=ja-translation lang=ja><var title="">outside port</var> の<span>ポート・メッセージ待ち行列</span>を開きます。</span></li> |
| 1859 |
|
|
|
| 1860 |
|
|
<li> |
| 1861 |
|
|
|
| 1862 |
|
|
<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 |
| 1863 |
|
|
URL</span>, with the <span>script browsing context</span> of the |
| 1864 |
|
|
script that invoked the method as the <var title="">owner browsing |
| 1865 |
|
|
context</var>, and with <var title="">worker global scope</var> as |
| 1866 |
|
|
the global scope.</span></p> |
| 1867 |
|
|
|
| 1868 |
|
|
</li> |
| 1869 |
|
|
|
| 1870 |
|
|
</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> |
| 1871 |
|
|
|
| 1872 |
|
|
<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)] |
| 1873 |
|
|
interface <dfn id=sharedworker>SharedWorker</dfn> : <a href=#abstractworker>AbstractWorker</a> { |
| 1874 |
|
|
readonly attribute <span>MessagePort</span> <a href=#dom-sharedworker-port title=dom-SharedWorker-port>port</a>; |
| 1875 |
|
|
};</span></pre> |
| 1876 |
|
|
|
| 1877 |
|
|
<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> |
| 1878 |
|
|
attribute must return the value it was assigned by the object's |
| 1879 |
|
|
constructor. It represents the <code>MessagePort</code> for |
| 1880 |
|
|
communicating with the shared worker.</span></p> |
| 1881 |
|
|
|
| 1882 |
|
|
<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> |
| 1883 |
|
|
constructor is invoked, the user agent must run the following |
| 1884 |
|
|
steps:</span></p> |
| 1885 |
|
|
|
| 1886 |
|
|
<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 |
| 1887 |
|
|
title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span></li> |
| 1888 |
|
|
|
| 1889 |
|
|
<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> |
| 1890 |
|
|
exception.</span><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code> |
| 1891 |
|
|
例外を投げます。</span></li> |
| 1892 |
|
|
|
| 1893 |
|
|
<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 |
| 1894 |
|
|
URL</span> is not the <span title="same origin">same</span> as the |
| 1895 |
|
|
origin of the script that invoked the constructor, then throw a |
| 1896 |
|
|
<span>security exception</span>.</span></li> |
| 1897 |
|
|
|
| 1898 |
|
|
<li> |
| 1899 |
|
|
|
| 1900 |
|
|
<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> |
| 1901 |
|
|
|
| 1902 |
|
|
<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 |
| 1903 |
|
|
shortly be associated with a <code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> |
| 1904 |
|
|
object. Let this <code><a href=#sharedworker>SharedWorker</a></code> object be <var title="">worker</var>.</span></li> |
| 1905 |
|
|
|
| 1906 |
|
|
<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 |
| 1907 |
|
|
by the <span>script execution context</span> of the script that |
| 1908 |
|
|
invoked the method. Let this be the <var title="">outside |
| 1909 |
|
|
port</var>.</span></li> |
| 1910 |
|
|
|
| 1911 |
|
|
<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> |
| 1912 |
|
|
|
| 1913 |
|
|
<li> |
| 1914 |
|
|
|
| 1915 |
|
|
<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 |
| 1916 |
|
|
whose <a href=#dom-workerglobalscope-closing title=dom-WorkerGlobalScope-closing>closing</a> |
| 1917 |
|
|
flag is false, whose <code title=dom-WorkerGlobalScope-name>name</code> attribute is |
| 1918 |
|
|
exactly equal to the <var title="">name</var> argument, and |
| 1919 |
|
|
whose <code title=dom-WorkerGlobalScope-location><a href=#dom-workerglobalscope-location>location</a></code> attribute |
| 1920 |
|
|
represents an <span>absolute URL</span> that has the <span>same |
| 1921 |
|
|
origin</span> as the resulting <span>absolute URL</span>, then |
| 1922 |
|
|
run these substeps:</span></p> |
| 1923 |
|
|
|
| 1924 |
|
|
<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 |
| 1925 |
|
|
<code><a href=#sharedworkerglobalscope>SharedWorkerGlobalScope</a></code> object.</span></li> |
| 1926 |
|
|
|
| 1927 |
|
|
<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> |
| 1928 |
|
|
attribute represents an <span>absolute URL</span> that is not |
| 1929 |
|
|
exactly equal to the resulting <span>absolute URL</span>, then |
| 1930 |
|
|
throw a <code>URL_MISMATCH_ERR</code> exception and abort all |
| 1931 |
|
|
these steps. <span class=XXX>code 21</span></span></li> |
| 1932 |
|
|
|
| 1933 |
|
|
<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 |
| 1934 |
|
|
global scope</var> に関連付けます。</span></li> |
| 1935 |
|
|
|
| 1936 |
|
|
<li><p class="no-ja-translation" data-ja-hash="bab9c8cea075e0f3614c731f09b49892"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span> |
| 1937 |
|
|
owned by <var title="">worker global scope</var>. Let this |
| 1938 |
|
|
be the <var title="">inside port</var>.</span></li> |
| 1939 |
|
|
|
| 1940 |
|
|
<li><p class="no-ja-translation" data-ja-hash="bf2642ced659847cb4402165d2ab3a8e"><span class=en-original lang=en><span>Entangle</span> <var title="">outside port</var> |
| 1941 |
|
|
and <var title="">inside port</var>.</span></li> |
| 1942 |
|
|
|
| 1943 |
|
|
<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 |
| 1944 |
|
|
step asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、 |
| 1945 |
|
|
次の段階を非同期に実行します。</span></li> |
| 1946 |
|
|
|
| 1947 |
|
|
<li><p class="no-ja-translation" data-ja-hash="54fc802e5e886ae34c575b12f00dfb03"><span class=en-original lang=en>Create an event that uses the <code>MessageEvent</code> |
| 1948 |
|
|
interface, with the name <code title=event-connect>connect</code>, which does not bubble, is |
| 1949 |
|
|
not cancelable, has no default action, has a <code title=dom-MessageEvent-data>data</code> attribute whose value |
| 1950 |
|
|
is the empty string and has a <code title=dom-MessageEvent-ports>ports</code> attribute whose |
| 1951 |
|
|
value is an array containing only the newly created port, and |
| 1952 |
|
|
<span>queue a task</span> to dispatch the event at <var title="">worker global scope</var>.</span></li> |
| 1953 |
|
|
|
| 1954 |
|
|
<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> |
| 1955 |
|
|
|
| 1956 |
|
|
</ol></li> |
| 1957 |
|
|
|
| 1958 |
|
|
<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> |
| 1959 |
|
|
object</span>. Let <var title="">worker global scope</var> be |
| 1960 |
|
|
this new object.</span></li> |
| 1961 |
|
|
|
| 1962 |
|
|
<li><p class="has-ja-translation" data-ja-hash="9c4f87efaa1e868cd6bf63dbffa749c0"><span class=en-original lang=en>Associate <var title="">worker</var> with <var title="">worker global scope</var>.</span><span class=ja-translation lang=ja><var title="">worker</var> を <var title="">worker |
| 1963 |
|
|
global scope</var> に関連付けます。</span></li> |
| 1964 |
|
|
|
| 1965 |
|
|
<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 |
| 1966 |
|
|
<var title="">worker global scope</var> to <var title="">name</var>.</span></li> |
| 1967 |
|
|
|
| 1968 |
|
|
<li><p class="no-ja-translation" data-ja-hash="2d1b035dbaad3feca57eb124d161b034"><span class=en-original lang=en><span>Create a <code>MessagePort</code> object</span> |
| 1969 |
|
|
owned by <var title="">worker global scope</var>. Let <var title="">inside port</var> be this new object.</span></li> |
| 1970 |
|
|
|
| 1971 |
|
|
<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 |
| 1972 |
|
|
<var title="">inside port</var>.</span></li> |
| 1973 |
|
|
|
| 1974 |
|
|
</ol></li> |
| 1975 |
|
|
|
| 1976 |
|
|
<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 |
| 1977 |
|
|
asynchronously.</span><span class=ja-translation lang=ja><var title="">worker</var> を返し、 |
| 1978 |
|
|
次の段階を非同期に実行します。</span></li> |
| 1979 |
|
|
|
| 1980 |
|
|
<li><p class="no-ja-translation" data-ja-hash="54fc802e5e886ae34c575b12f00dfb03"><span class=en-original lang=en>Create an event that uses the <code>MessageEvent</code> |
| 1981 |
|
|
interface, with the name <code title=event-connect>connect</code>, which does not bubble, is not |
| 1982 |
|
|
cancelable, has no default action, has a <code title=dom-MessageEvent-data>data</code> attribute whose value is |
| 1983 |
|
|
the empty string and has a <code title=dom-MessageEvent-ports>ports</code> attribute whose value |
| 1984 |
|
|
is an array containing only the newly created port, and <span>queue |
| 1985 |
|
|
a task</span> to dispatch the event at <var title="">worker global |
| 1986 |
|
|
scope</var>.</span></li> |
| 1987 |
|
|
|
| 1988 |
|
|
<li> |
| 1989 |
|
|
|
| 1990 |
|
|
<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 |
| 1991 |
|
|
URL</span>, with the <span>script browsing context</span> of the |
| 1992 |
|
|
script that invoked the method as the <var title="">owner browsing |
| 1993 |
|
|
context</var>, and with <var title="">worker global scope</var> as |
| 1994 |
|
|
the global scope.</span></p> |
| 1995 |
|
|
|
| 1996 |
|
|
</li> |
| 1997 |
|
|
|
| 1998 |
|
|
</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> |
| 1999 |
|
|
|
| 2000 |
|
|
<!-- the XXX below is for collapsing this interface onto WorkerGlobalScope so it looks like just one interface - the inheritance is a spec fiction only --> |
| 2001 |
|
|
<pre class="idl no-ja-translation" data-ja-hash="e8e268afeac4362468ee982b8574cfa2"><span class=en-original lang=en>[NoInterfaceObject, ImplementedOn=WorkerGlobalScope, XXX] interface <dfn id=workerutils>WorkerUtils</dfn> { |
| 2002 |
|
|
void <a href=#dom-workerglobalscope-importscripts title=dom-WorkerGlobalScope-importScripts>importScripts</a>([Variadic] in DOMString urls); |
| 2003 |
|
|
readonly attribute <a href=#worker-navigator title=worker-Navigator>Navigator</a> <a href=#dom-worker-navigator title=dom-worker-navigator>navigator</a>; |
| 2004 |
|
|
<span>Database</span> <span title=dom-opendatabase>openDatabase</span>(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize); |
| 2005 |
|
|
<span>DatabaseSync</span> <span title=dom-opendatabase-sync>openDatabaseSync</span>(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize); |
| 2006 |
|
|
};</span></pre> |
| 2007 |
|
|
|
| 2008 |
|
|
<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> |
| 2009 |
|
|
interface must also implement the <code><a href=#workerutils>WorkerUtils</a></code> |
| 2010 |
|
|
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> |
| 2011 |
|
|
|
| 2012 |
|
|
<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 |
| 2013 |
|
|
must also implement the <code>WindowTimers</code> interface. (This |
| 2014 |
|
|
interface provides the <code title="">setTimeout()</code> method and |
| 2015 |
|
|
its friends.)</span></p><!-- XXX ref --> |
| 2016 |
|
|
|
| 2017 |
|
|
<!-- XXX ApplicationCache --> |
| 2018 |
|
|
|
| 2019 |
|
|
<!-- XXX debugging: void log(in DOMString s); // log to console --> |
| 2020 |
|
|
|
| 2021 |
|
|
<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> |
| 2022 |
|
|
objects, etc) are not available to workers in this version of this |
| 2023 |
|
|
specification.</span><span class=ja-translation lang=ja>DOM API (<code>Node</code> オブジェクト、 <code>Document</code> |
| 2024 |
|
|
オブジェクト、その他) は、この版のこの仕様書では労働者に利用可能ではありません。</span></p> |
| 2025 |
|
|
|
| 2026 |
|
|
|
| 2027 |
|
|
<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> |
| 2028 |
|
|
|
| 2029 |
|
|
<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 |
| 2030 |
|
|
<code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object, the user agent must run the |
| 2031 |
|
|
following steps:</span></p> |
| 2032 |
|
|
|
| 2033 |
|
|
<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 |
| 2034 |
|
|
anything. Abort these steps.</span><span class=ja-translation lang=ja>引数がない場合、何も返さずに返ります。 |
| 2035 |
|
|
これらの段階を停止します。</span></li> |
| 2036 |
|
|
|
| 2037 |
|
|
<li><p class="has-ja-translation" data-ja-hash="b89818b453add85fbb5ec1e963e3072c"><span class=en-original lang=en><span title="resolve a url">Resolve</span> each |
| 2038 |
|
|
argument.</span><span class=ja-translation lang=ja>各引数を<span title="resolve a url">解決</span>します。</span></li> |
| 2039 |
|
|
|
| 2040 |
|
|
<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> |
| 2041 |
|
|
exception.</span><span class=ja-translation lang=ja>いずれかが失敗した場合、 <code>SYNTAX_ERR</code> 例外を投げます。</span></li> |
| 2042 |
|
|
|
| 2043 |
|
|
<!-- |
| 2044 |
|
|
<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 |
| 2045 |
|
|
URLs</span> have an <span>origin</span> that is not the <span |
| 2046 |
|
|
title="same origin">same</span> as the origin of the script that |
| 2047 |
|
|
invoked the method, then throw a <span>security |
| 2048 |
|
|
exception</span>.</span><span class=ja-translation lang=ja>結果として得られた<span title="absolute URL">絶対 |
| 2049 |
|
|
URL</span> |
| 2050 |
|
|
のいずれかが、メソッドを呼び出したスクリプトの<span>origin</span>と<span |
| 2051 |
|
|
title="same origin">同じ</span>ではない起源を持つ場合、 |
| 2052 |
|
|
<span>保安性例外</span>を投げます。</span></p></li> |
| 2053 |
|
|
--> |
| 2054 |
|
|
|
| 2055 |
|
|
<li> |
| 2056 |
|
|
|
| 2057 |
|
|
<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 |
| 2058 |
|
|
resulting <span title="absolute URLs">absolute URL</span>.</span><span class=ja-translation lang=ja>結果として得られた<span title="absolute URLs">絶対 URL</span> |
| 2059 |
|
|
によって識別される資源をそれぞれ<span>取得</span>しようと試みます。</span></p> |
| 2060 |
|
|
|
| 2061 |
|
|
</li> |
| 2062 |
|
|
|
| 2063 |
|
|
<li> |
| 2064 |
|
|
|
| 2065 |
|
|
<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 |
| 2066 |
|
|
the first one, run these substeps:</span><span class=ja-translation lang=ja>各引数について、与えられた順に最初のものから、次の部分段階群を走らせます。</span></p> |
| 2067 |
|
|
|
| 2068 |
|
|
<ol><li> |
| 2069 |
|
|
|
| 2070 |
|
|
<p class="has-ja-translation" data-ja-hash="a5cd8fb5d75985afdc62f7ac228329d4"><span class=en-original lang=en>Wait for the fetching attempt for the corresponding resource |
| 2071 |
|
|
to complete.</span><span class=ja-translation lang=ja>対応する資源を取得しようとする試みが完了するのを待ちます。</span></p> |
| 2072 |
|
|
|
| 2073 |
|
|
<p class="no-ja-translation" data-ja-hash="c821b5a32a4316df06e95e2117d4d21a"><span class=en-original lang=en>If the fetching attempt failed, throw a |
| 2074 |
|
|
<code>NETWORK_ERR</code> exception and abort all these |
| 2075 |
|
|
steps.</span></p> |
| 2076 |
|
|
|
| 2077 |
|
|
<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 |
| 2078 |
|
|
resource">decode the script resource</a> to obtain its <var title="">source</var>.</span></p> |
| 2079 |
|
|
|
| 2080 |
|
|
<p class="no-ja-translation" data-ja-hash="c880bce97c5a1aadccd8989fc4ec8551"><span class=en-original lang=en>Let <var title="">language</var> be JavaScript.</span></p> |
| 2081 |
|
|
|
| 2082 |
|
|
<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 |
| 2083 |
|
|
always assumed to be JavaScript, regardless of the MIME |
| 2084 |
|
|
type.</span><span class=ja-translation lang=ja>労働者のスクリプトと同じく、ここでのスクリプトも、 MIME 型に関わらず常に |
| 2085 |
|
|
JavaScript であるとみなします。</span></p> <!-- XXX --> |
| 2086 |
|
|
|
| 2087 |
|
|
</li> |
| 2088 |
|
|
|
| 2089 |
|
|
<li> |
| 2090 |
|
|
|
| 2091 |
|
|
<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 |
| 2092 |
|
|
same global object, browsing context, character encoding, base |
| 2093 |
|
|
URL, and script group as the <span title=concept-script>script</span> that was created by the |
| 2094 |
|
|
worker's <a href=#run-a-worker>run a worker</a> algorithm.</span></p> |
| 2095 |
|
|
|
| 2096 |
|
|
<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 |
| 2097 |
|
|
returns, fails to parse, fails to catch an exception, or gets |
| 2098 |
|
|
prematurely aborted by the "<a href=#kill-a-worker>kill a worker</a>" or |
| 2099 |
|
|
"<a href=#terminate-a-worker>terminate a worker</a>" algorithms defined above.</span></p> |
| 2100 |
|
|
|
| 2101 |
|
|
<p class="no-ja-translation" data-ja-hash="41014f4a697396a3e02475a4d61a7472"><span class=en-original lang=en>If it failed to parse, then throw a |
| 2102 |
|
|
<code>SyntaxError</code><!-- XXX ref? --> exception and abort |
| 2103 |
|
|
all these steps.</span></p> |
| 2104 |
|
|
|
| 2105 |
|
|
<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 |
| 2106 |
|
|
aborted, then abort all these steps, letting the exception or |
| 2107 |
|
|
aborting continue to be processed by the script that called the |
| 2108 |
|
|
<code title=dom-WorkerGlobalScope-importScripts><a href=#dom-workerglobalscope-importscripts>importScripts()</a></code> |
| 2109 |
|
|
method.</span></p> |
| 2110 |
|
|
|
| 2111 |
|
|
<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 |
| 2112 |
|
|
worker</a>" algorithms abort the script then abort all these |
| 2113 |
|
|
steps.</span></p> |
| 2114 |
|
|
|
| 2115 |
|
|
</li> |
| 2116 |
|
|
|
| 2117 |
|
|
</ol></li> |
| 2118 |
|
|
|
| 2119 |
|
|
</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> |
| 2120 |
|
|
|
| 2121 |
|
|
<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 |
| 2122 |
|
|
of the <code><a href=#workerutils>WorkerUtils</a></code> interface must return an instance of |
| 2123 |
|
|
the <code title=worker-Navigator><a href=#worker-navigator>Navigator</a></code> interface, which |
| 2124 |
|
|
represents the identity and state of the user agent (the |
| 2125 |
|
|
client):</span></p> |
| 2126 |
|
|
|
| 2127 |
|
|
<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> { |
| 2128 |
|
|
// objects implementing this interface also implement the interfaces listed below |
| 2129 |
|
|
};</span></pre> |
| 2130 |
|
|
|
| 2131 |
|
|
<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 |
| 2132 |
|
|
implement the <span>NavigatorID</span> and |
| 2133 |
|
|
<span>NavigatorOnLine</span> interfaces specified in the HTML5 |
| 2134 |
|
|
specification. <a href=#refsHTML5>[HTML5]</a></span></p> |
| 2135 |
|
|
|
| 2136 |
|
|
<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> |
| 2137 |
|
|
interface defined in this specification is different than the one |
| 2138 |
|
|
defined in the HTML5 specification.</span></p> |
| 2139 |
|
|
|
| 2140 |
|
|
|
| 2141 |
|
|
|
| 2142 |
|
|
<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> |
| 2143 |
|
|
|
| 2144 |
|
|
<p class="no-ja-translation" data-ja-hash="19eb87f08ae55792f853c1a1d4d9c540"><span class=en-original lang=en>The <code title=dom-opendatabase>openDatabase()</code> and |
| 2145 |
|
|
<code title=dom-opendatabase-sync>openDatabaseSync()</code> |
| 2146 |
|
|
methods are defined in the Web Storage specification. <a href=#refsWEBSTORAGE>[WEBSTORAGE]</a></span></p> |
| 2147 |
|
|
|
| 2148 |
|
|
|
| 2149 |
|
|
|
| 2150 |
|
|
<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> |
| 2151 |
|
|
|
| 2152 |
|
|
<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 |
| 2153 |
|
|
the global scope of scripts whose <span>script execution |
| 2154 |
|
|
context</span> is a <code><a href=#workerglobalscope>WorkerGlobalScope</a></code> object except for |
| 2155 |
|
|
the following:</span></p> |
| 2156 |
|
|
|
| 2157 |
|
|
<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 |
| 2158 |
|
|
constructors defined by the XMLHttpRequest specifications, except |
| 2159 |
|
|
that the <span>document response entity body</span> must always be |
| 2160 |
|
|
null. <a href=#refsXHR>[XHR]</a></span><span class=ja-translation lang=ja>XMLHttpRequest 仕様書で定義されている |
| 2161 |
|
|
<code>XMLHttpRequest</code> とすべての界面オブジェクトと構築器、 |
| 2162 |
|
|
ただし<span>文書応答実体本体</span>は常に null でなければ<em class=rfc2119 title="MUST">なりません</em>。 <a |
| 2163 |
|
|
href=#refsXHR>[XHR]</a></span></li> |
| 2164 |
|
|
|
| 2165 |
|
|
<li><p class="no-ja-translation" data-ja-hash="dd3bea5f0bf238db87ad9fb59c7be62a"><span class=en-original lang=en>The <code>WebSocket</code> interface object and |
| 2166 |
|
|
constructor. <a href=#refsWEBSOCKET>[WEBSOCKET]</a></span></li> |
| 2167 |
|
|
|
| 2168 |
|
|
<li><p class="no-ja-translation" data-ja-hash="bbeb4f3911ac8aedf89935a07d70106c"><span class=en-original lang=en>The <code>EventSource</code> interface object and |
| 2169 |
|
|
constructor. <a href=#refsEVENTSOURCE>[EVENTSOURCE]</a></span></li> |
| 2170 |
|
|
|
| 2171 |
|
|
<li><p class="no-ja-translation" data-ja-hash="939ce12ed8f8d8ce1888e6c380db792c"><span class=en-original lang=en>The <code>MessageChannel</code> interface object and |
| 2172 |
|
|
constructor. <a href=#refsHTML5>[HTML5]</a></span></li> |
| 2173 |
|
|
|
| 2174 |
|
|
<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> |
| 2175 |
|
|
|
| 2176 |
|
|
</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> |
| 2177 |
|
|
|
| 2178 |
|
|
<pre class="idl no-ja-translation" data-ja-hash="8d12e26ffacf32cd9d10364c0255ab53"><span class=en-original lang=en>interface <dfn id=workerlocation>WorkerLocation</dfn> { |
| 2179 |
|
|
readonly attribute DOMString <a href=#dom-workerlocation-href title=dom-WorkerLocation-href>href</a>; |
| 2180 |
|
|
readonly attribute DOMString <a href=#dom-workerlocation-protocol title=dom-WorkerLocation-protocol>protocol</a>; |
| 2181 |
|
|
readonly attribute DOMString <a href=#dom-workerlocation-host title=dom-WorkerLocation-host>host</a>; |
| 2182 |
|
|
readonly attribute DOMString <a href=#dom-workerlocation-hostname title=dom-WorkerLocation-hostname>hostname</a>; |
| 2183 |
|
|
readonly attribute DOMString <a href=#dom-workerlocation-port title=dom-WorkerLocation-port>port</a>; |
| 2184 |
|
|
readonly attribute DOMString <a href=#dom-workerlocation-pathname title=dom-WorkerLocation-pathname>pathname</a>; |
| 2185 |
|
|
readonly attribute DOMString <a href=#dom-workerlocation-search title=dom-WorkerLocation-search>search</a>; |
| 2186 |
|
|
readonly attribute DOMString <a href=#dom-workerlocation-hash title=dom-WorkerLocation-hash>hash</a>; |
| 2187 |
|
|
};</span></pre> |
| 2188 |
|
|
|
| 2189 |
|
|
<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 |
| 2190 |
|
|
URL</span> set at its creation.</span></p> |
| 2191 |
|
|
|
| 2192 |
|
|
<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> |
| 2193 |
|
|
attribute must return the <span>absolute URL</span> that the object |
| 2194 |
|
|
represents.</span></p> |
| 2195 |
|
|
|
| 2196 |
|
|
<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 |
| 2197 |
|
|
of <span>URL decomposition attributes</span>, <dfn id=dom-workerlocation-protocol title=dom-WorkerLocation-protocol><code>protocol</code></dfn>, |
| 2198 |
|
|
<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>, |
| 2199 |
|
|
<dfn id=dom-workerlocation-pathname title=dom-WorkerLocation-pathname><code>pathname</code></dfn>, |
| 2200 |
|
|
<dfn id=dom-workerlocation-search title=dom-WorkerLocation-search><code>search</code></dfn>, |
| 2201 |
|
|
and <dfn id=dom-workerlocation-hash title=dom-WorkerLocation-hash><code>hash</code></dfn>. These must |
| 2202 |
|
|
follow the rules given for URL decomposition attributes, with the |
| 2203 |
|
|
<span title=concept-uda-input>input</span> being the |
| 2204 |
|
|
<span>absolute URL</span> that the object represents (same as the |
| 2205 |
|
|
<code title=dom-WorkerLocation-href><a href=#dom-workerlocation-href>href</a></code> attribute), and |
| 2206 |
|
|
the <span title=concept-uda-setter>common setter action</span> |
| 2207 |
|
|
being a no-op, since the attributes are defined to be readonly. <a href=#refsHTML5>[HTML5]</a></span></p> |
| 2208 |
|
|
|
| 2209 |
|
|
|
| 2210 |
|
|
|
| 2211 |
|
|
|
| 2212 |
|
|
<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> |
| 2213 |
|
|
|
| 2214 |
|
|
<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 |
| 2215 |
|
|
draft.<!--XXX--></span></p> |
| 2216 |
|
|
|
| 2217 |
|
|
|
| 2218 |
|
|
<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 --> |
| 2219 |
|
|
|
| 2220 |
|
|
<p class="has-ja-translation" data-ja-hash="a17a0feb6f58a31040d51121e80bc233" data-ja-real-hash="f59286e011a68a30c6514aae2845f151"><span class=en-original lang=en>Thanks to |
| 2221 |
|
|
|
| 2222 |
|
|
Aaron Boodman, |
| 2223 |
|
|
Алексей Проскуряков (Alexey Proskuryakov), |
| 2224 |
|
|
Anne van Kesteren, |
| 2225 |
|
|
Ben Turner, |
| 2226 |
|
|
Dmitry Titov, |
| 2227 |
|
|
Drew Wilson, |
| 2228 |
|
|
Jeremy Orlow, |
| 2229 |
|
|
Jonas Sicking, |
| 2230 |
|
|
Justin James, |
| 2231 |
|
|
Kevin Hakanson, |
| 2232 |
|
|
Maciej Stachowiak, |
| 2233 |
|
|
Michael Nordman, |
| 2234 |
|
|
Mike Smith, |
| 2235 |
|
|
|
| 2236 |
|
|
and |
| 2237 |
|
|
|
| 2238 |
|
|
Philip Taylor |
| 2239 |
|
|
|
| 2240 |
|
|
for their useful and substantial comments.</span><span class=ja-translation lang=ja>Aaron Boodman, Алексей Проскуряков (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> |
| 2241 |
|
|
|
| 2242 |
|
|
<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 |
| 2243 |
|
|
technology and whose experience has been a huge influence on this |
| 2244 |
|
|
specification.</span><span class=ja-translation lang=ja>Gears チームの方々にも非常に感謝します。 |
| 2245 |
|
|
Gears チームの方々はこの技術を開拓し、その経験はこの仕様書にも多大な影響を与えています。 |
| 2246 |
|
|
</span></p> |
| 2247 |
|
|
|
| 2248 |
|
|
|