全画面 API

現行標準 — 最終更新

参加方法:
GitHub whatwg/fullscreen (新規 issue, 既存の issue)
Matrix でチャット
コミット履歴:
GitHub whatwg/fullscreen/commits
このコミット時点のスナップショット
@fullscreenapi
テスト:
web-platform-tests fullscreen/ (進行中の作業)
翻訳 (参考情報):
日本語
简体中文
한국어

概要

全画面 API 現行標準は、要素を全画面表示するための API を定義します。

1. 用語

この仕様は Infra Standard に依存します。[INFRA]

この仕様で使用されるほとんどの用語は、CSS、DOM、HTML、Web IDL からのものです。[CSS] [DOM] [HTML] [WEBIDL]

2. モデル

すべての 要素には、fullscreen flag が関連付けられています。特に指定がない限り、これは未設定です。

すべての iframe 要素には、iframe fullscreen flag が関連付けられています。特に指定がない限り、これは未設定です。

すべての 文書には、fullscreen element が関連付けられています。 fullscreen element は、 文書top layer において fullscreen flag が設定されている最上位の 要素 です。該当しない場合は null です。

すべての 文書には、list of pending fullscreen events が関連付けられています。 これは (string, 要素) からなる タプル順序付き集合 です。初期状態は空です。

element を fullscreen にする手順:

  1. hideUntil に、topmost popover ancestorelement, null, false を渡して実行した結果を設定する。

  2. hideUntil が null の場合、elementnode documenthideUntil に設定する。

  3. hide all popovers untilhideUntil, false, true を渡して実行する。

  4. elementfullscreen flag を設定する。

  5. Remove from the top layer immediatelyelement を渡して実行する。

  6. Add to the top layerelement を渡して実行する。

element の fullscreen を解除するには、elementfullscreen フラグiframe fullscreen フラグ(もしあれば)、および キーボードロックフラグを解除し、与えられた elementtop layer から 直ちに削除します。

document の fullscreen を解除するには、 documenttop layer 内で fullscreen flag が設定されているすべての 要素 に対して unfullscreen を実行する。


fully exit fullscreendocument document に対して実行するには、次の手順を実行する:

  1. documentfullscreen element が null なら、これ以降の手順を終了する。

  2. documenttop layer 内で、fullscreen flag が設定されている fullscreen element 以外の要素について Unfullscreen elements を実行する。

  3. Exit fullscreen document.

removing stepsremovedNode で実行されるときは、次の手順を実行する:

  1. documentremovedNodenode document を設定する。

  2. nodesremovedNodeshadow-including inclusive descendants のうち fullscreen flag が設定されているものを shadow-including tree order で取得する。

  3. node について、次のとおり:

    1. nodedocumentfullscreen element なら、 exit fullscreen document を実行する。

    2. それ以外の場合は、node の fullscreen を解除する

    3. documenttop layernode含む場合、 remove from the top layer immediatelynode を渡して実行する。

      他の仕様でも top layer に要素を追加・削除できるため、 nodedocumentfullscreen element でない場合もあります。 例えば node が開いている dialog 要素である場合などです。

unloading document cleanup stepsdocument で実行されるとき、 fully exit fullscreendocument に実行する。


Fullscreen がサポートされるのは、 事前に設定されたユーザーの好み、安全上のリスク、またはプラットフォームの制限がない場合です。


run the fullscreen stepsdocument document に対して実行するには、次の手順を実行する:

  1. pendingEventsdocumentlist of pending fullscreen events を設定する。

  2. document の list of pending fullscreen events を空にする

  3. (type, element) について、pendingEvents の中で:

    1. elementconnected かつ、 その node documentdocument なら targetelement を設定し、そうでなければ targetdocument を設定する。

    2. Fire an event という名前で typebubblescomposed 属性を true にして target でイベントを発火する。

これらの手順は HTML で定義されている event loop と統合されています。[HTML]


모든 요소에는 연관된 keyboard lock flag가 있다. 달리 명시되지 않는 한 이는 unset 상태이다.

문서는 자신의 fullscreen element가 null이 아니고, 그 fullscreen elementkeyboard lock flag가 set되어 있을 때 keyboard lock가 활성 상태이며, 그렇지 않으면 비활성 상태이다.

3. API

enum FullscreenNavigationUI {
  "auto",
  "show",
  "hide"
};

enum FullscreenKeyboardLock {
  "browser",
  "none"
};

dictionary FullscreenOptions {
  FullscreenKeyboardLock keyboardLock = "none";
  FullscreenNavigationUI navigationUI = "auto";
};

partial interface Element {
  Promise<undefined> requestFullscreen(optional FullscreenOptions options = {});

  attribute EventHandler onfullscreenchange;
  attribute EventHandler onfullscreenerror;
};

partial interface Document {
  [LegacyLenientSetter] readonly attribute boolean fullscreenEnabled;
  [LegacyLenientSetter, Unscopable] readonly attribute boolean fullscreen; // historical

  Promise<undefined> exitFullscreen();

  attribute EventHandler onfullscreenchange;
  attribute EventHandler onfullscreenerror;
};

partial interface mixin DocumentOrShadowRoot {
  [LegacyLenientSetter] readonly attribute Element? fullscreenElement;
};
promise = element . requestFullscreen([options])
element を fullscreen で表示し、完了したら promise を解決します。

指定された場合、optionsnavigationUI メンバーは、fullscreen 中にナビゲーション UI を表示することが望ましいかどうかを示します。 "show" に設定された場合、画面領域よりもナビゲーションの簡潔さが優先され、 "hide" に設定された場合、より多くの画面領域が優先されます。ユーザーエージェントは常に、 アプリケーションの設定よりもユーザー設定を尊重してかまいません。既定値 "auto" は、アプリケーションの設定がないことを示します。

指定された場合、optionskeyboardLock メンバーは、指定されたキーボードロックモードが適用されるかどうかを示します。

"browser" に設定された場合、キーボードロックを 適用できます。

ユーザーエージェントは常に、アプリケーションの設定よりもユーザー設定を尊重してかまいません。既定値 "none" は、キーボードロックが適用されないことを示します。

document . fullscreenEnabled

document要素を fullscreen で表示する能力を持ち、かつfullscreen がサポートされている場合は true を返し、 そうでない場合は false を返します。

promise = document . exitFullscreen()

documentfullscreen 要素の fullscreen 表示を停止し、 完了したら promise を解決します。

document . fullscreenElement

documentfullscreen 要素を返します。

shadowroot . fullscreenElement

shadowrootfullscreen 要素を返します。

要素 element に対する fullscreen 要素準備確認は、以下のすべてが true の場合に true を返し、そうでない場合は false を返します:

requestFullscreen(options) メソッドの 手順は以下の通りです:

  1. pendingDocthisnode document を設定する。

  2. promise に新しい promise を作成する。

  3. pendingDocfully active でない場合、promiseTypeError 例外で reject し、promise を返す。

  4. error に false を設定する。

  5. 次のいずれかの条件が false の場合、error を true にする:

  6. error が false の場合、consume user activationpendingDocrelevant global object で実行する。

  7. promise を返し、残りの手順を 並列で実行する。

  8. error が false の場合、pendingDocnode navigabletop-level traversableactive document のビューポートサイズを options["navigationUI"] を考慮して変更する(任意):

    ビューポートサイズ
    "hide" 出力デバイス画面の全サイズ
    "show" ユーザーエージェントがページナビゲーションコントロールを表示できるように制限された出力デバイス画面のサイズ
    "auto" 上記いずれかに一致するユーザーエージェント定義

    必要に応じて、ユーザーがこれを元に戻す方法を知らせるメッセージを表示することができます。

  9. 次のいずれかの条件が false の場合、error を true にする:

  10. error が true の場合:

    1. Append (fullscreenerror, this) を pendingDoclist of pending fullscreen events に追加する。

    2. promiseTypeError 例外で reject し、これ以降の手順を終了する。

  11. fullscreenElements順序付き集合 を新規作成し、 初期値として this を入れる。

  12. while true:

    1. lastfullscreenElements の最後の 要素 を設定する。

    2. containerlastnode navigablecontainer を設定する。

    3. container が null なら break する。

    4. AppendcontainerfullscreenElements に追加する。

  13. fullscreenElements 内の各 element について反復します:

    1. docelementノード文書とします。

    2. elementdocfullscreen 要素である場合、 continue します。

      何も変更されていない場合、オブザーバーに通知する必要はありません。

    3. elementthis であり、かつ thisiframe 要素である場合、elementiframe fullscreen フラグを設定します。

    4. doc 内でelement を fullscreen にします。

    5. (fullscreenchange, element) を doc保留中の fullscreen イベントのリスト追加します。

    要素がfullscreen にされる 順序は観測できません。なぜなら、fullscreen 手順を実行するツリー順で呼び出されるためです。

  14. options["keyboardLock"] の値に応じて:

    "browser"

    thisキーボードロックフラグを設定します。

    "none"

    thisキーボードロックフラグを解除します。

  15. promise を undefined で解決します。

アウトオブプロセスの navigables を持つ実装は読者への課題として残されています。改善案のフィードバック歓迎です。

fullscreenEnabled の getter 手順は、 this が "fullscreen" 機能の使用を許可されているかつ fullscreen がサポートされている場合は true を返し、そうでない場合は false を返します。

fullscreen の getter 手順は、 thisfullscreen 要素 が null の場合は false を返し、そうでない場合は true を返します。

代わりに fullscreenElement 属性を使用してください。

fullscreenElement の getter 手順は次のとおりです:

  1. thisシャドウルートであり、そのホスト接続されていない場合、null を返します。

  2. candidate を、fullscreen 要素this に対してリターゲットした結果とします。

  3. candidatethis が同じツリー内にある場合、 candidate を返します。

  4. null を返します。

文書は、そのtop layer内に、fullscreen フラグが設定された要素がちょうど 1 つ存在する場合、 単純 fullscreen 文書であるといいます。

文書は、その top layer内に 2 つの要素があっても、 単純 fullscreen 文書であることがあります。たとえば、fullscreen 要素に加えて、 open 状態の dialog 要素が存在することがあります。

doc が与えられたとき、fullscreen を解除する文書を収集するには、 次の手順を実行します:

  1. docs を、doc からなる順序付き集合 とします。

  2. true の間反復します:

    1. lastDocdocs の最後の文書とします。

    2. 表明: lastDocfullscreen 要素は null ではありません。

    3. lastDoc単純 fullscreen 文書でない場合、break します。

    4. containerlastDocノード navigableコンテナとします。

    5. container が null の場合、break します。

    6. containeriframe fullscreen フラグが設定されている場合、break します。

    7. containerノード文書docs追加します。

  3. docs を返します。

    これは、fullscreen 要素fullscreen 解除される文書の集合ですが、 docs 内の最後の文書は、そのtop layer内に fullscreen フラグが設定された 要素を複数持つ場合があり、 その場合、その文書は fullscreen のままになります。

文書 docfullscreen を終了するには、 次の手順を実行します:

  1. promise を新しい promise とします。

  2. doc完全にアクティブでない、または docfullscreen 要素 が null の場合、promiseTypeError 例外で拒否し、 promise を返します。

  3. resize を false とします。

  4. docs を、 doc が与えられた fullscreen を解除する文書を収集する 結果とします。

  5. topLevelDocdocノード navigableトップレベル traversableアクティブ文書とします。

  6. topLevelDocdocs 内にあり、かつそれが 単純 fullscreen 文書である場合、 doctopLevelDoc に設定し、 resize を true に設定します。

  7. docfullscreen 要素接続されていない場合:

    1. (fullscreenchange, docfullscreen 要素) を doc保留中の fullscreen イベントのリスト追加します。

    2. docfullscreen 要素fullscreen 解除します。

  8. promise を返し、残りの手順を並列に実行します。

  9. doc画面の向きの完全ロック解除手順を実行します。

  10. resize が true の場合、doc のビューポートをその "normal" 寸法にリサイズします。

  11. docfullscreen 要素が null の場合、promise を undefined で解決し、これらの手順を終了します。

  12. exitDocs を、 doc が与えられた fullscreen を解除する文書を収集する 結果とします。

  13. descendantDocs を、doc子孫 navigableアクティブ文書のうち、 fullscreen 要素が非 null のもの(もしあれば)からなる、 ツリー 順順序付き集合 とします。

  14. exitDocs 内の各 exitDoc について反復します:

    1. (fullscreenchange, exitDocfullscreen 要素) を exitDoc保留中の fullscreen イベントのリスト追加します。

    2. resize が true の場合、exitDoc の fullscreen を解除します。

    3. そうでない場合、exitDocfullscreen 要素fullscreen 解除します。

  15. descendantDocs 内の各 descendantDoc について反復します:

    1. (fullscreenchange, descendantDocfullscreen 要素) を descendantDoc保留中の fullscreen イベントのリスト追加します。

    2. descendantDoc の fullscreen を解除します。

    文書がfullscreen 解除される 順序は観測できません。なぜなら、fullscreen 手順を実行するツリー順で呼び出されるためです。

  16. promise を undefined で解決します。

exitFullscreen() メソッド手順は、 this 上でfullscreen を終了するを実行した結果を返します。


以下は、Element および Document オブジェクトによってイベントハンドラー IDL 属性として サポートされなければならないイベントハンドラー(および対応する イベントハンドラーイベント型)です:

イベントハンドラー イベントハンドラーイベント型
onfullscreenchange fullscreenchange
onfullscreenerror fullscreenerror

これらは ShadowRoot または Window オブジェクトではサポートされず、どの名前空間の Element オブジェクトにも、対応するイベントハンドラー内容属性はありません。

4. UI

ユーザーエージェントは、ネイティブのメディア全画面コントロールの実装に requestFullscreen() および exitFullscreen() を利用することが推奨されます。

ユーザーが クローズリクエスト を開始すると、これは 全画面から完全に退出する アルゴリズムを クローズリクエスト手順の一部として起動します。これは クローズウォッチャー よりも優先されます。

ユーザーエージェントは、必要と判断した場合にはいつでも、閉じるリクエストexitFullscreen() の呼び出しなしに、任意の fullscreen セッションを終了してかまいません。

キーボードロックがアクティブな場合、ユーザーには、 たとえばブラウザー UI インジケーターを通じて、明確に通知されるべきです。

ユーザーがキーボードロックを上書きし、制御をシステムまたはユーザーエージェントに戻すための、 単純で直感的な方法があるべきです。

5. レンダリング

このセクションは HTML のレンダリングセクションと同等に解釈されます。[HTML]

5.1. :fullscreen 疑似クラス

:fullscreen 疑似クラスは、次のいずれかの条件が true である 要素 element にマッチしなければなりません:

これは fullscreenElement API と異なり、API は最上位の fullscreen element を返します。

5.2. ユーザーエージェントレベルのスタイルシートのデフォルト

@namespace "http://www.w3.org/1999/xhtml";

*|*:not(:root):fullscreen {
  position:fixed !important;
  inset:0 !important;
  margin:0 !important;
  box-sizing:border-box !important;
  min-width:0 !important;
  max-width:none !important;
  min-height:0 !important;
  max-height:none !important;
  width:100% !important;
  height:100% !important;
  transform:none !important;

  /* intentionally not !important */
  object-fit:contain;
}

iframe:fullscreen {
  border:none !important;
  padding:0 !important;
}

*|*:not(:root):fullscreen::backdrop {
  background:black;
}

6. キーボードロック

キーボードロックは、通常はシステムまたはユーザーエージェントのいずれかによって処理される特定のキー入力を インターセプトできるようにすることで、fullscreen で実行される Web アプリケーションの機能を拡張します。 これは、ESC やファンクションキーのようなキーがアプリケーションの機能に不可欠である、 ゲームやリモートデスクトップアプリケーションなどのシナリオで有用です。

キーボードロックは、Web アプリケーションがキー入力を直接キャプチャして処理し、 ユーザーエージェントまたはオペレーティングシステムによって通常実行される既定の動作を迂回できるようにします。 通常ならユーザーエージェントまたはシステムレベルのアクションをトリガーするキーイベントは、代わりに fullscreen の Web アプリケーションへリダイレクトされます。そのようなキーイベント(個々のキーまたはキーボードショートカット)は、 キーボード ロックがアクティブな間はアクションを持たないこともあれば、同じアクションを依然として持ちつつ、 Web ページが preventDefault() を呼び出してそのアクションをキャンセルできるようにすることもあります。

文書キーボードロックがアクティブから非アクティブに変更されるたびに、ユーザーエージェントは キーボードロックを無効化し、キーボード入力の処理をユーザーエージェントおよびオペレーティングシステムの 既定の動作に復元しなければなりません。

ユーザーエージェントは、fullscreen を終了する目的のために追加の入力を予約するべきです。 また、Windows の Ctrl+Alt+Del など、セキュリティ上の理由によりインターセプトできない システムレベルのキーシーケンスまたは組み合わせもあります。

たとえば、Esc キーを使用して fullscreen を終了するユーザーエージェントは、キー押下時の 即時終了を防ぐためにキーボードロックを使用し、代わりに fullscreen を終了するには長押しを要求します。 そのようなユーザーエージェントの中には、fullscreen セッションに部分的なキーボードロックを暗黙的に付与するものもあり、 その場合、Esc キーが明示的なキーボードロックの影響を受ける唯一のキーである可能性があります。

7. Permissions Policy 統合

この仕様は、"fullscreen" という文字列で識別される ポリシー制御機能を定義します。 その デフォルト許可リスト'self' です。

文書permissions policy は、その文書内のコンテンツが全画面表示できるかどうかを決定します。いずれかの文書で無効化されている場合、その文書内のコンテンツは 全画面表示の使用が許可されません

HTML allowfullscreen 属性は、iframe 要素の container policy に影響します。allow 属性で上書きされない限り、iframe の allowfullscreen を設定することは <iframe allow="fullscreen *"> と同等です。 詳細は Permissions Policy § 6.3.1 allowfullscreen を参照してください。

8. セキュリティとプライバシーに関する考慮事項

ユーザーエージェントは、たとえばオーバーレイによって、何かが fullscreen で表示されていることを エンドユーザーが認識できるようにするべきです。ユーザーエージェントは、常に機能する fullscreen の終了手段を提供し、 これをユーザーに知らせるべきです。これは、fullscreen 中にユーザーエージェント、あるいはオペレーティングシステム環境さえも 再現することで、サイトがエンドユーザーをだますことを防ぐためです。 requestFullscreen() の定義も参照してください。

子 navigable 内のコンテンツが fullscreen になることを可能にするには、 権限ポリシーを通じて具体的に許可されている必要があります。これは、HTML iframe 要素の allowfullscreen 属性、または HTML iframe 要素の allow 属性内の適切な宣言、またはネスト元の文書とともに配信される `Permissions-Policy` HTTP ヘッダーを通じて行います。

これは、たとえば第三者のコンテンツが明示的な許可なしに fullscreen になることを防ぎます。

キーボードロックを適用する場合、 主にシステム制御やプライバシー上のリスク(Alt+Tab、Ctrl+Alt+Del など)を伴わない、 限定されたキー集合のみを API 経由でロックできます。

キーボードロックを適用する場合、 ユーザーエージェントは、ユーザーがロックを上書きできるようにするなど、 この機能の濫用を防ぐための保護策を実装するべきです。

ユーザーエージェントは、任意の粒度(たとえば特定のサイトに対して、またはグローバルに)で キーボードロックを無視するユーザー設定を提供してもかまいません。 同様に、一部のプラットフォームにはキーボードが存在しない場合があり、その場合ユーザーエージェントは キーボードロック状態を無視してもかまいません。ただし、フィンガープリンティングを避けるため、 これは requestFullscreen() メソッドの Web から観測可能な動作に影響を与えたり、他の方法で公開されたりするべきではありません。

この仕様では以前、::backdrop や文書の top layer の概念を定義していました。

謝辞

最初のモデル設計と素晴らしい貢献をしてくれた Robert O’Callahan 氏に多大なる感謝を申し上げます。

以下の方々にも感謝します: Andy Earnshaw, Changwan Hong, Chris Pearce, Darin Fisher, Dave Tapuska, fantasai, Giuseppe Pascale, Glenn Maynard, Ian Clelland, Ian Hickson, Ignacio Solla, João Eiras, Josh Soref, Kagami Sascha Rosylight, Matt Falkenhagen, Mihai Balan, Mounir Lamouri, Øyvind Stenhaug, Pat Ladd, Rafał Chłodnicki, Riff Jiang, Rune Lillesveen, Sigbjørn Vik, Simon Pieters, Tab Atkins-Bittner, Takayoshi Kochi, Theresa O’Connor, triple-underscore, Vincent Scheib, Xidorn Quan も素晴らしい貢献者です。

この標準は Philip Jägenstedt (Google, philip@foolip.org) によって編集されています。元の執筆者は Anne van Kesteren (Apple, annevk@annevk.nl) です。 Tantek Çelik (Mozilla, tantek@cs.stanford.edu) は法的な整理を担当しました。

知的財産権

Copyright © WHATWG (Apple, Google, Mozilla, Microsoft). この成果物は Creative Commons Attribution 4.0 International License の下でライセンスされています。その一部がソースコードに組み込まれる場合、その部分は BSD 3-Clause License の下でライセンスされます。

これは現行標準です。 特許審査版に興味がある方は 現行標準審査ドラフト をご覧ください。

索引

この仕様で定義されている用語

参照で定義されている用語

参考文献

規範的参考文献

[CSS]
Bert Bos 他. カスケーディング・スタイル・シート レベル2 改訂1 (CSS 2.1) 仕様。URL: https://drafts.csswg.org/css2/
[CSS-POSITION-4]
Elika Etemad; Tab Atkins Jr.. CSS Positioned Layout Module Level 4. URL: https://drafts.csswg.org/css-position-4/
[DOM]
Anne van Kesteren. DOM 現行標準。現行標準。 URL: https://dom.spec.whatwg.org/
[HTML]
Anne van Kesteren 他. HTML 現行標準。 現行標準。URL: https://html.spec.whatwg.org/multipage/
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra 現行標準。現行標準。URL: https://infra.spec.whatwg.org/
[MATHML]
Patrick D F Ion; Robert R Miner. 数学記法言語 (MathML™) 1.01 仕様。2023年3月7日。REC。URL: https://www.w3.org/TR/REC-MathML/
[PERMISSIONS-POLICY-1]
Ian Clelland. Permissions Policy。URL: https://w3c.github.io/webappsec-permissions-policy/
[SCREEN-ORIENTATION]
Marcos Caceres. Screen Orientation。 URL: https://w3c.github.io/screen-orientation/
[SVG]
Erik Dahlström 他. スケーラブル・ベクター・グラフィックス (SVG) 1.1 (第2版)。2011年8月16日。REC。URL: https://www.w3.org/TR/SVG11/
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL 現行標準。現行標準。URL: https://webidl.spec.whatwg.org/

IDL 索引

enum FullscreenNavigationUI {
  "auto",
  "show",
  "hide"
};

enum FullscreenKeyboardLock {
  "browser",
  "none"
};

dictionary FullscreenOptions {
  FullscreenKeyboardLock keyboardLock = "none";
  FullscreenNavigationUI navigationUI = "auto";
};

partial interface Element {
  Promise<undefined> requestFullscreen(optional FullscreenOptions options = {});

  attribute EventHandler onfullscreenchange;
  attribute EventHandler onfullscreenerror;
};

partial interface Document {
  [LegacyLenientSetter] readonly attribute boolean fullscreenEnabled;
  [LegacyLenientSetter, Unscopable] readonly attribute boolean fullscreen; // historical

  Promise<undefined> exitFullscreen();

  attribute EventHandler onfullscreenchange;
  attribute EventHandler onfullscreenerror;
};

partial interface mixin DocumentOrShadowRoot {
  [LegacyLenientSetter] readonly attribute Element? fullscreenElement;
};

MDN

Document/exitFullscreen

In all current engines.

Firefox64+Safari16.4+Chrome71+
Opera58+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android?iOS SafariNoneChrome for Android?Android WebView71+Samsung Internet?Opera Mobile50+
MDN

Document/fullscreenchange_event

In all current engines.

Firefox64+Safari16.4+Chrome71+
Opera58+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android?iOS SafariNoneChrome for Android?Android WebView71+Samsung Internet?Opera Mobile50+

Element/fullscreenchange_event

In all current engines.

Firefox64+Safari16.4+Chrome71+
Opera58+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android?iOS SafariNoneChrome for Android?Android WebView71+Samsung Internet?Opera Mobile50+
MDN

Document/fullscreenElement

In all current engines.

Firefox64+Safari16.4+Chrome71+
Opera58+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile50+
MDN

Document/fullscreenEnabled

In all current engines.

Firefox64+Safari16.4+Chrome71+
Opera58+Edge79+
Edge (Legacy)12+IENone
Firefox for Android?iOS SafariNoneChrome for Android?Android WebView?Samsung Internet?Opera Mobile50+
MDN

Document/fullscreenerror_event

In all current engines.

Firefox64+Safari16.4+Chrome71+
Opera58+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android?iOS SafariNoneChrome for Android?Android WebView71+Samsung Internet?Opera Mobile50+

Element/fullscreenerror_event

In all current engines.

Firefox64+Safari16.4+Chrome71+
Opera58+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android?iOS SafariNoneChrome for Android?Android WebView71+Samsung Internet?Opera Mobile50+
MDN

Element/requestFullscreen

In all current engines.

Firefox64+Safari16.4+Chrome71+
Opera58+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android64+iOS SafariNoneChrome for Android?Android WebView71+Samsung Internet?Opera Mobile50+
MDN

Element

In all current engines.

Firefox1+Safari1+Chrome1+
Opera8+Edge79+
Edge (Legacy)12+IE4+
Firefox for Android?iOS Safari?Chrome for Android?Android WebView37+Samsung Internet?Opera Mobile10.1+
MDN

ShadowRoot/fullscreenElement

In all current engines.

Firefox64+Safari16.4+Chrome71+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

:fullscreen

Firefox64+SafariNoneChrome71+
Opera?Edge79+
Edge (Legacy)12+IENone
Firefox for Android?iOS SafariNoneChrome for Android?Android WebView71+Samsung Internet?Opera Mobile?
MDN

Headers/Feature-Policy/fullscreen

In only one current engine.

FirefoxNoneSafariNoneChrome62+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?

Headers/Permissions-Policy/fullscreen

In only one current engine.

FirefoxNoneSafariNoneChrome88+
Opera?Edge88+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?