<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> でも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時計</anchor>は重要です。</p><section><h1>システム時計</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 次の機能は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">システム時計</anchor> (によって表される実際の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時</anchor>) へのアクセスを提供するものです。<figure class="short list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">現在時刻</anchor></li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> 次の機能では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォームの時差</anchor>の情報も必要です。<figure class="short list"><ul><li><code class="JS" xml:lang="en">new Date</code></li></ul></figure></p></section><section><h1>単調増加時計</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 次の機能は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">単調増加</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時計</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">monotonic clock</anchor>) へのアクセスを提供するものです。<figure class="middle list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">現在高分解能時刻</anchor><ul><li><code class="DOMi" xml:lang="en">Performance</code> API</li><li><code class="DOMm" xml:lang="en">requestAnimationFrame</code></li></ul></li></ul></figure></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>によっては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">単調増加時計</anchor>も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>側 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">API</anchor>
で提供されています。</comment-p></section><section><h1>タイマー</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 次の機能は一定時間 (以上) の経過を待ちます。</p><figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[102]</anchor-end> <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">setTimeout</anchor></code>, <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">setInterval</anchor></code></li><li><code class="DOMm" xml:lang="en">requestIdleCallback</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="107" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[107]</anchor-end> <code class="HTML" xml:lang="en">&lt;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">meta</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">http-equiv</anchor>=<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Refresh</anchor>&gt;</code> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTML</src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="108" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[108]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Refresh:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">仕様なし</src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="98" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[98]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">resource fetch algorithm</anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTML</src><ul><li><code class="DOMe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">progress</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベント</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">発火</anchor>は 350ms (±200ms) ごと、または1<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>受信のいずれか遅い方で行わなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[99]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">stall timeout</anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTML</src><ul><li><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント定義の時間<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">user-agent defined length of time</rt></rubyb> (3秒くらいとする<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べき</strong></anchor>) で発生</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="100" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[100]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DnD</anchor> 処理 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTML</src><ul><li>350ms (±200ms) ごとに行わなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="104" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[104]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">make progress notifications</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">make upload progress notifications</anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHR</anchor></src><ul><li><code class="DOMe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">progress</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベント</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">発火</anchor>は 50ms ごと、または1<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>受信のいずれか遅い方で行わなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="189" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[189]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">allowed to show a popup</anchor> の判定は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>定義の時間枠で判断されます<ul><li><anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.whatwg.org/specs/web-apps/current-work/#allowed-to-show-a-popup">http://www.whatwg.org/specs/web-apps/current-work/#allowed-to-show-a-popup</anchor-external></li></ul></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHR</anchor> の <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">timeout</anchor></code> は、毎<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ミリ秒</anchor>新たに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キュー</anchor>に追加される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マイクロタスク</anchor>でチェックする形で仕様化されています。<ul><li>実装上は、指定されたタイムアウトまで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ミリ秒</anchor>単位で待って<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マイクロタスク</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キュー</anchor>に入れる形にできそうです。</li></ul></li><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">getCurrentPosition</anchor></code>, <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">watchPosition</anchor></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DeviceOrientation Event</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">発火</anchor>の間隔</li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="214" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[214]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Retry-After:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>でも「待つ」時間の規定がありますが、
実装されていないと思われます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 各プロトコルにもタイムアウト時間があります。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP接続の処理</anchor>参照。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>も、指定された時間の経過後、無効となります。<figure class="list short"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DNSキャッシュ</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既知HSTSホスト</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既知PKPホスト</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CORS</anchor></li></ul></figure></p></section><section><h1>動画、音声、アニメーション</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリングの更新</anchor>参照。</p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> 構文については<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webの日時形式</anchor>を参照。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時間帯</anchor>も参照。</p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <cite>chrome.webNavigation - Google Chrome</cite>
( (<time>2016-06-20 16:13:47 +09:00</time>))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://developer.chrome.com/extensions/webNavigation">https://developer.chrome.com/extensions/webNavigation</anchor-external></figcaption><blockquote><p>It's important to note that some technical oddities in the OS's handling of distinct Chrome processes can cause the clock to be skewed between the browser itself and extension processes. That means that WebNavigation's events' timeStamp property is only guaranteed to be internally consistent. Comparing one event to another event will give you the correct offset between them, but comparing them to the current time inside the extension (via (new Date()).getTime(), for instance) might give unexpected results.</p></blockquote></figure></section><section><h1>歴史</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <cite xml:lang="en">removing 'monotonic clock' section</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">igrigorik</anchor>著, <time>2016-10-25 02:31:07 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/w3c/user-timing/commit/bb98bce094395f61e92edca5d0cc1e09ab8d07df">https://github.com/w3c/user-timing/commit/bb98bce094395f61e92edca5d0cc1e09ab8d07df</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <cite>John Resig - Accuracy of JavaScript Time</cite>
(<time>2017-04-09 17:25:08 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://ejohn.org/blog/accuracy-of-javascript-time/">http://ejohn.org/blog/accuracy-of-javascript-time/</anchor-external></p></section></body></html>