now visible algorithm

now visible algorithm

[4] visibilitychange イベント文書の可視性が変化した時に発火されます。

仕様書

可視状態への変化

[5] 最上位閲覧文脈文書が可視状態に変化するときには、 now visible algorithm を実行しなければなりません >>2

[22] すなわち、 document.hiddenfalse にし、 visibilityStatevisible にした上で、 次のような単純イベントを発火 >>2 し、 バイブレーションを実施しているなら、それを停止させなければなりません >>17

単純イベント >>2

イベント型
visibilitychange
対象
Document
bubbles
取消可能
既定動作
なし

[23] session history entry への履歴の探索にあっては pageshow イベント発火の直前に、それ以外の場合にあっては利用者対話タスク源タスクをキューに入れることによって行います >>19

[10] >>7文書をunloadする途中で HTML Standard 側にフックがありますが (>>1 で追加)、なぜ >>5 で同様のフックを用意していないのか謎です。

[15] セッション履歴文書可視性変更ステップ群 (session history document visibility change steps)

... で追加されていますが、現時点で Page Visibility はまだそれを使っていません。

不可視状態への変化

[7] 最上位閲覧文脈文書が不可視状態に変化するときには、 now hidden algorithm を実行しなければなりません >>2

[20] これはすなわち、 document.hiddentrue にし、 visibilityStatehidden に変更した上で、 次のような単純イベントを発火 >>2 し、 バイブレーションを実施しているならそれを停止させなければなりません >>17

単純イベント >>2

イベント型
visibilitychange
対象
Document
bubbles
取消可能
既定動作
なし

[21] 文書をunloadする途中であればunload文書可視性変更手順 (unloading document visibility change steps) (pagehide イベント発火の直後) において、 それ以外の場合にあっては利用者対話タスク源タスクをキューに入れることによって行います >>2

[6] かつては unloaded という値がありました。 visibilityState の新しい値は前者の場合なら unloaded、 後者の場合なら hidden ですが、 unloaded に対応しない場合には 両方 hidden でも構いません >>19

[8] なぜわざわざ unloaded でなくても良いことになっているのでしょう。 実装の都合上区別できないWebブラウザーがあるんでしょうかね。
[13] unload イベントの時は document.hiddenに、 visibilityStateunloaded/hidden になっているということになります。

[14] 元々 visibilityStatehiddenunload文書可視性変更手順の結果 hidden が設定されるケースだと値は実際には変わっていませんが、仕様上 visibilitychange発火されることになっています。

[9] これはその後の改訂で修正されているようです。

歴史

[3] visibilitychange イベントPage Visibility によって追加されました。

[11] vendor prefix のついた webkitvisibilitychangemozvisibilitychangemsvisibilitychange も実装されていました。

[12] Re: [Page Visibility] Navigate away behavior (was RE: TPAC 2011 Web Performance WG 2011-11-01) ( (Sreeram Ramachandran 著, 版)) <http://lists.w3.org/Archives/Public/public-web-perf/2012May/0079.html>

[18] cleanup visibilityState conditions · w3c/page-visibility@cd72018 ( 版) <https://github.com/w3c/page-visibility/commit/cd7201817c3f2115e7a4ef8e05fbca01e5e91103>

[24] Merge pull request #23 from w3c/onvisibilitychange · w3c/page-visibility@f9e4478 ( 版) <https://github.com/w3c/page-visibility/commit/f9e4478455dfe920697af2068b1be969f7c5006e>

[25] Vibration API Recommendation errata · w3c/vibration@b844ba9 ( 版) <https://github.com/w3c/vibration/commit/b844ba923d9a4c9b04398dd793011b5ace48f242>