msvisibilitychange

msvisibilitychange

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

仕様書

可視状態への変化

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

[22] すなわち、 document.hidden を false にし、 visibilityState を visible にした上で、 次のような単純イベントを発火 >>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.hidden を true にし、 visibilityState を hidden に変更した上で、 次のような単純イベントを発火 >>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 が真に、 visibilityState が unloaded/hidden になっているということになります。

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

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

歴史

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

[11] vendor prefix のついた webkitvisibilitychange、 mozvisibilitychange、msvisibilitychange も実装されていました。

[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>