[81] DOM API の中には利用者活性化が必要なものがいくつかあります。 利用者活性化とは、 利用者が viewport 内の要素をクリックするなど、 当該閲覧文脈に対して明確に操作する意思を示したことをいいます。
[82] 利用者活性化の制約は、ある種のブラクラのような利用者の操作を妨害する動作をスクリプト (の著者) が勝手に実行させることを防ぐものであります。 Webプラットフォームの草創期 (平成時代初期) にその危険性が知られるようになり、発見的な制約から徐々に整備が進んできました。 現在では HTML Standard によって挙動が詳細に定められています。
[83] 利用者活性化の制約は、 viewport の枠を超えて画面表示に干渉するような操作や、 装置 (ハードウェア) の状態を変化させるような操作などに課されています。
[77] 利用者活性化は、 粘着性活性化と過渡活性化の2つに大別されます。 両者の使い方によって、 利用者活性化に依存した API は3種類に分類されます。
[84]
利用者活性化は、
窓 (Window
)
ごとに管理されます。
つまり利用者が Webブラウザーのある窓を操作しても、
他の窓には影響しません。
また、
利用者があるフレームを操作しても、
他のフレームに影響するとは限りません。
[85] 利用者によるクリックなどの操作は、 活性化通知につながります。
[40]
Window
は、
最終活性化時刻印を持ちます。
これは、
最後の活性化通知を得た時刻を表しています。
DOMHighResTimeStamp
値の他に、
+∞ や
-∞
となることがあります。
初期値は
+∞
です。
>>39
[49] 閲覧文脈閲覧文脈における活性化通知は、 次のようにします。 >>39
[50] 利用者エージェントは、 閲覧文脈閲覧文脈における user interaction に関する activation triggering input event の dispatch の前に、 閲覧文脈について活性化通知しなければなりません。 >>39
[56] activation triggering input event は、 次のすべてを満たすイベントイベントです。 >>39
[43]
Window
窓が粘着性活性化状態であるか否かは、
... であるか否かです。 >>39
[44] 窓の粘着性活性化は、 利用者が窓と interaction したことがあるかどうかを表しています。 初期状態では偽になります (現在高解像度時刻が +∞)。 窓が初めて活性化通知を得たとき真となり、 再び偽となることはありません。 >>39
[45] Web頁を開いたとき (または勝手に開かれたとき)、 利用者が何も操作していないのに、 勝手に意図せぬ動作をして利用者が困るのを防ぐため、 使われています。
... であるか否かです。 >>39
[47] 窓の過渡活性化は、 利用者が最近窓と interaction したかどうかを表しています。 初期状態では偽になります。 窓が活性化通知を得たとき真となり、 しばらくして偽に戻ります。 >>39
[86] 過渡活性化が真から偽に変化するのは、 一定時間が経過した場合 (満期) と、 特定の API が呼び出された場合 (利用者活性化消費) の2通りがあります。
[41] 過渡活性化時間長は、 利用者エージェントの定義する値です。 対象の API において利用者による活性化が利用可能な長さを表す定数です。 >>39
[42] この値は、高々数秒程度で、 利用者による頁との interaction と、 頁が当該 API を呼び出したこととの関係を知覚できる長さであることが期待されています。 >>39
[48] 窓の過渡活性化状態が過渡活性化時間長の経過を以て偽となることを、 満期済といいます。 >>39
[59]
Window
窓について利用者活性化消費は、
次のようにします。
>>39
[60] 活性化消費するAPIから呼び出されます。 >>39
[1] Editorial: "allowed to show a popup" → "triggered by user activation" ( (domenic著, )) https://github.com/whatwg/html/commit/797f412eb78fd88bd5d0a1c098d17fbf1736c188
[2] Existing intervention: user gesture required for sensitive operations · Issue #12 · WICG/interventions ( ()) https://github.com/WICG/interventions/issues/12
[3] Allow requestFullscreen() to be called from an orientation change event (mounirlamouri著, ) https://github.com/whatwg/fullscreen/commit/e5e96a9da944babf0e246980559cd80a46a300ca
[11] 17041 – Setting location before the page is done loading shouldn't always be a replace load ( ()) https://www.w3.org/Bugs/Public/show_bug.cgi?id=17041
[12] Consider pointerup and touchend for "triggered by user activation" (NavidZ著, ) https://github.com/whatwg/html/commit/adafe995c6d4f5f6df0497a534d31e51043b6750
[30] Add allow-top-navigation-by-user-activation sandbox token (domenic著, ) https://github.com/whatwg/html/commit/8abd73ec3a56541e3f6486d3a593a8bcfd67295d
[33] Require user gesture to request notification permissions · Issue #49 · WICG/interventions () https://github.com/WICG/interventions/issues/49
[34] Need concept of "consuming" user activation · Issue #3122 · whatwg/html () https://github.com/whatwg/html/issues/3122
[35] Treat trusted contextmenu events as user activation (mustaqahmed著, ) https://github.com/whatwg/html/commit/51bd770cf58cdd761674df0f47c9f9dfc58c5310
[36] Treat trusted `contextmenu` events as user activation. by mustaqahmed · Pull Request #3659 · whatwg/html () https://github.com/whatwg/html/pull/3659
[37] Deprecations and removals in Chrome 69 | Web | Google Developers () https://developers.google.com/web/updates/2018/09/chrome-70-deps-rems
[69] triggered by user activation (旧 allowed to show a popup) とは、次のいずれかの条件を満たすことをいいます >>68。
[31] 他に、閲覧文脈外部で利用者の明示的な指示があった場合も含めるべきと思われます。
[64] Location
では、次のいずれかの条件を満たすと分岐します >>65。 (タスク以外の判定条件もあります。 Location
参照。)
[18] タスクは、自身がこの条件を満たしているかどうかの情報を保持しておく必要があります。
またイベントオブジェクト (の持つ情報の一部または全部) も必要かもしれません。
例えば window.open
は、プラットフォームの慣習により、 Ctrl
押下時に新しい閲覧文脈を常に開く、といったような動作にできます。
[25] 実際には triggered by user activation の実装 (またはその呼び出し元の実装) は更に厳しく制限しているかもしれません。
[28] 例えば setTimeout
を使って短時間に別のタスクで多くの新しい最上位閲覧文脈を作成するのはブラクラであり、
拒否するべきと考えられます。
[19] triggered by user activation は、次の場面で使われます。
[13] engagement gesture でもイベントのリストが参照されています。
[10] triggered by a user generated orientation change とは、 現在走っているタスクの process user orientation change が真であることをいいます >>9。
[5] allowed to request fullscreen とは、... のいずれかが真であることをいいます >>4。
[8] これは、 requestFullscreen
で参照されます。
[95] User Activation v2 in Chrome - Google ドキュメント, https://docs.google.com/document/d/1erpl1yqJlc1pH0QvVVmi1s3WzqQLsEXTLLh6VuYp228/edit
[99] User Activation v2 (UAv2) | user-activation-v2, , https://mustaqahmed.github.io/user-activation-v2/
[100] User Activation v2 browser-side - Google ドキュメント, https://docs.google.com/document/d/1XL3vCedkqL65ueaGVD-kfB5RnnrnTaxLc7kmU91oerg/edit
[38] Revamp the user activation model (mustaqahmed, , ) https://github.com/whatwg/html/commit/8f8c1f50158736b3cf16188377a0974a20367c8b
[91] Make "triggered by user activation" match browser behavior · Issue #1903 · whatwg/html () https://github.com/whatwg/html/issues/1903
[92] Events list that trigger "allowed to show a popup" seems too small · Issue #1358 · whatwg/html () https://github.com/whatwg/html/issues/1358
[93] pop-up blocker algorithm doesn't define behavior for touch · Issue #599 · whatwg/html () https://github.com/whatwg/html/issues/599
[94] Need concept of "consuming" user activation · Issue #3122 · whatwg/html () https://github.com/whatwg/html/issues/3122
[96] Existing Chrome APIs using user gestures - Google ドキュメント, https://docs.google.com/document/d/1mcxB5J_u370juJhSsmK0XQONG2CIE3mvu827O-Knw_Y/edit
[97] Some means to signal that a method requires user action to be called · Issue #479 · whatwg/webidl () https://github.com/whatwg/webidl/issues/479
[98] Activation-triggering events across browsers - Google スプレッドシート, https://docs.google.com/spreadsheets/d/1DGXjhQ6D3yZXIePOMo0dsd2agz0t5W7rYH1NwJ-QGJo/edit#gid=0
[101] Added a new section on User Activation v2. by mustaqahmed · Pull Request #3851 · whatwg/html · GitHub, https://github.com/whatwg/html/pull/3851
[108] User activation TPAC session summary - Google ドキュメント, https://docs.google.com/document/d/1gHxQMdXGX4UjjoPXi0c1vhwYregQzWNEHqgbydopCoo/edit#
[102] User Activation @BlinkOn10 - Google スライド, https://docs.google.com/presentation/d/120NtvswBSEvwd2Gjmj2v9r_BDQ6n2PYEYY0dI3EB56w/edit#slide=id.g56099e1461_1_0
[103] User activation: different concepts for different usages · Issue #3859 · whatwg/html · GitHub, https://github.com/whatwg/html/issues/3859
[104] GitHub - WICG/gesture-delegation: Gesture Delegation API proposal, https://github.com/WICG/gesture-delegation
[105] User Activation: ability to transfer activation to another frame · Issue #4364 · whatwg/html · GitHub, https://github.com/whatwg/html/issues/4364
[106] Activation Delegation through Transfer - Google ドキュメント, https://docs.google.com/document/d/1NKLJ2MBa9lA_FKRgD2ZIO7vIftOJ_YiXXMYfRMdlV-s/edit
[107] GitHub - dtapuska/useractivation, https://github.com/dtapuska/useractivation
mousemove
やorientationchange
のように利用者の明示的な操作を表すとはいえないものは含まれていません。