전체 화면 API

현행 표준 — 마지막 업데이트

참여하기:
GitHub whatwg/fullscreen (새 이슈, 오픈된 이슈)
Matrix에서 채팅하기
커밋:
GitHub whatwg/fullscreen/commits
이 커밋 기준 스냅샷
@fullscreenapi
테스트:
web-platform-tests fullscreen/ (진행 중인 작업)
번역 (비규범):
日本語
简体中文

개요

전체 화면 API 현행 표준은 요소가 전체 화면으로 표시될 수 있도록 하는 API를 정의합니다.

1. 용어

이 명세서는 Infra 표준에 의존합니다. [INFRA]

이 명세서에서 사용되는 대부분의 용어는 CSS, DOM, HTML, 그리고 Web IDL에서 가져온 것입니다. [CSS] [DOM] [HTML] [WEBIDL]

2. 모델

모든 요소fullscreen flag와 연관되어 있습니다. 별도의 명시가 없는 한, 해당 값은 설정되어 있지 않습니다.

모든 iframe 요소iframe fullscreen flag와 연관되어 있습니다. 별도의 명시가 없는 한, 해당 값은 설정되어 있지 않습니다.

모든 문서fullscreen element와 연관되어 있습니다. fullscreen elementtop layer에서 fullscreen flag가 설정된 가장 위에 있는 요소이며, 없다면 null입니다.

모든 문서pending fullscreen 이벤트 목록과 연관되어 있으며, 이는 (string, 요소)로 구성된 튜플순서가 지정된 집합입니다. 초기값은 비어 있습니다.

element를 전체 화면으로 만들기 위한 방법:

  1. hideUntiltopmost popover ancestor 알고리즘을 element, null, false로 실행한 결과로 설정합니다.

  2. hideUntil이 null인 경우, elementnode documenthideUntil을 설정합니다.

  3. hide all popovers until 알고리즘을 hideUntil, false, true로 실행합니다.

  4. elementfullscreen flag를 설정합니다.

  5. 즉시 top layer에서 제거 알고리즘을 element에 대해 실행합니다.

  6. top layer에 추가 알고리즘을 element에 대해 실행합니다.

element의 전체 화면을 해제하기elementfullscreen flagiframe fullscreen flag(있는 경우)을 해제하고, 즉시 top layer에서 제거 알고리즘을 element에 대해 실행합니다.

document의 전체 화면을 해제하기전체 화면 해제 알고리즘을 요소 각각에 대해 실행합니다. 이때 documenttop layer에서 fullscreen flag가 설정된 요소를 찾아 실행합니다.


document의 전체 화면을 완전히 종료하기 알고리즘은 다음과 같습니다:

  1. documentfullscreen element가 null이면, 알고리즘을 종료합니다.

  2. 전체 화면 해제 알고리즘을 fullscreen flag가 설정된 요소 각각에 대해 실행합니다. 단, documentfullscreen element는 제외합니다.

  3. 전체 화면 종료 알고리즘을 document에 대해 실행합니다.

removing stepsremovedNode와 함께 실행될 때, 다음을 수행합니다:

  1. documentremovedNodenode document로 설정합니다.

  2. nodesremovedNodeshadow-including inclusive descendantsfullscreen flag가 설정된 요소로, shadow-including tree order 순서대로 구성합니다.

  3. 각각의 node에 대해 다음을 수행합니다:

    1. nodedocumentfullscreen element인 경우, 전체 화면 종료 알고리즘을 document에 대해 실행합니다.

    2. 그 외의 경우, node의 전체 화면 해제 알고리즘을 실행합니다.

    3. documenttop layernode포함하고 있다면, 즉시 top layer에서 제거 알고리즘을 node에 대해 실행합니다.

      다른 명세서에서도 top layer에서 요소를 추가/제거할 수 있으므로, nodedocumentfullscreen element가 아닐 수 있습니다. 예를 들어, node가 열린 dialog 요소일 수 있습니다.

unloading document cleanup stepsdocument와 함께 실행될 때, 전체 화면 완전 종료 알고리즘을 document에 대해 실행합니다.


전체 화면이 지원됨은 이전에 설정된 사용자 환경설정, 보안 위험 또는 플랫폼 제한이 없을 때를 의미합니다.


전체 화면 단계 실행하기 알고리즘을 document document에 대해 실행하려면 다음을 수행합니다:

  1. pendingEventsdocumentpending fullscreen 이벤트 목록으로 설정합니다.

  2. 비우기 알고리즘을 documentpending fullscreen 이벤트 목록에 대해 실행합니다.

  3. 각각의 (type, element) 튜플에 대해 다음을 수행합니다:

    1. elementconnected 상태이고, node documentdocument인 경우 targetelement로, 그렇지 않으면 targetdocument로 설정합니다.

    2. 이벤트 발생 알고리즘을 type 이름으로, bubblescomposed 속성 값을 true로 하여 target에서 실행합니다.

이 단계들은 HTML에서 정의된 이벤트 루프와 통합됩니다. [HTML]

3. API

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

dictionary FullscreenOptions {
  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를 전체 화면으로 표시하고, 작업 완료 시 promise가 resolve됩니다.

options가 제공되면, optionsnavigationUI 멤버는 전체 화면 상태에서 탐색 UI를 표시할지의 선호를 나타냅니다. "show"로 설정하면 화면 공간보다 탐색의 간편함이 우선시되고, "hide"로 설정하면 더 많은 화면 공간이 우선시됩니다. 사용자 에이전트는 항상 애플리케이션의 선호보다 사용자 선호를 우선할 수 있습니다. 기본값 "auto"는 애플리케이션 선호가 없음을 나타냅니다.

document . fullscreenEnabled

document요소를 전체 화면으로 표시할 수 있고, 전체 화면이 지원됨이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

promise = document . exitFullscreen()

documentfullscreen element가 전체 화면 표시를 중지하며, 작업 완료 시 promise가 resolve됩니다.

document . fullscreenElement

documentfullscreen element를 반환합니다.

shadowroot . fullscreenElement

shadowrootfullscreen element를 반환합니다.

fullscreen element 준비 확인 알고리즘은 element element에 대해 다음 조건이 모두 true이면 true, 그렇지 않으면 false를 반환합니다.

requestFullscreen(options) 메서드 단계는 다음과 같습니다:

  1. pendingDocthisnode document로 설정합니다.

  2. promise를 새 프로미스로 생성합니다.

  3. pendingDocfully active가 아니면, promiseTypeError 예외로 reject하고 promise를 반환합니다.

  4. error를 false로 설정합니다.

  5. 다음 조건 중 하나라도 false이면 error를 true로 설정합니다:

  6. error가 false이면, consume user activation 알고리즘을 pendingDocrelevant global object에 적용합니다.

  7. promise를 반환하고, 나머지 단계는 병렬로 실행합니다.

  8. error가 false이면, pendingDocnode navigabletop-level traversableactive document의 viewport 크기를 재설정합니다. 이때 options["navigationUI"] 값을 반영할 수 있습니다:

    viewport 크기
    "hide" 출력 장치의 화면 전체 크기
    "show" 출력 장치의 화면 크기를 페이지 네비게이션 컨트롤이 표시될 수 있도록 제한
    "auto" 사용자 에이전트가 정의하지만, 위 둘 중 하나와 일치함

    사용자가 전체 화면을 해제하는 방법에 대한 메시지를 선택적으로 표시할 수 있습니다.

  9. 다음 조건 중 하나라도 false이면 error를 true로 설정합니다:

  10. error가 true이면:

    1. Append (fullscreenerror, this)를 pendingDocpending fullscreen 이벤트 목록에 추가합니다.

    2. promiseTypeError 예외로 reject하고, 이 단계들을 종료합니다.

  11. fullscreenElements순서가 지정된 집합으로 생성하고, 초기값은 this 하나만 포함합니다.

  12. 다음 반복을 수행합니다:

    1. lastfullscreenElements의 마지막 item으로 설정합니다.

    2. containerlastnode navigablecontainer로 설정합니다.

    3. container가 null이면 break합니다.

    4. Append containerfullscreenElements에 추가합니다.

  13. 각각의 element에 대해 fullscreenElements에서 다음을 수행합니다:

    1. docelementnode document로 설정합니다.

    2. elementdocfullscreen element이면 continue합니다.

      변경 사항이 없을 때는 옵저버에게 알릴 필요가 없습니다.

    3. elementthis이고, thisiframe 요소인 경우, elementiframe fullscreen flag를 설정합니다.

    4. 전체 화면 element 알고리즘을 doc에서 실행합니다.

    5. Append (fullscreenchange, element)를 docpending fullscreen 이벤트 목록에 추가합니다.

    요소들이 전체 화면 처리되는 순서는 관찰할 수 없습니다. 전체 화면 단계 실행하기 알고리즘이 트리 순서로 호출되기 때문입니다.

  14. promise를 undefined로 resolve합니다.

프로세스 분리된 navigable 구현은 독자에게 맡깁니다. 개선 제안 환영합니다.

fullscreenEnabled getter 단계는 this가 "fullscreen" 기능을 사용할 수 있고, 전체 화면이 지원됨이면 true를 반환하고, 아니면 false를 반환합니다.

fullscreen getter 단계는 thisfullscreen element가 null이면 false를 반환하고, 그렇지 않으면 true를 반환합니다.

fullscreenElement 속성을 대신 사용하세요.

fullscreenElement getter 단계는 다음과 같습니다:

  1. thisshadow root이고, 그 hostconnected가 아니면 null을 반환합니다.

  2. candidatefullscreen elementthis에 대해 retargeting한 결과로 설정합니다.

  3. candidatethis가 동일한 트리에 있으면 candidate를 반환합니다.

  4. null을 반환합니다.

문서simple fullscreen document라고 하는데, 그 top layerfullscreen flag가 설정된 요소가 정확히 하나 있을 때를 말합니다.

문서top layer요소가 두 개 있어도 simple fullscreen document가 될 수 있습니다. 예를 들어, fullscreen element 외에 열린 dialog 요소가 있을 수 있습니다.

collect documents to unfullscreen 알고리즘은 doc을 받아 다음 단계로 진행합니다:

  1. docs순서가 지정된 집합으로 생성하고, doc만 포함합니다.

  2. While true:

    1. lastDocdocs의 마지막 문서로 설정합니다.

    2. Assert: lastDocfullscreen element는 null이 아니다.

    3. lastDocsimple fullscreen document가 아니면 break합니다.

    4. containerlastDocnode navigablecontainer로 설정합니다.

    5. container가 null이면 break합니다.

    6. containeriframe fullscreen flag가 설정되어 있으면 break합니다.

    7. Append containernode documentdocs에 추가합니다.

  3. docs를 반환합니다.

    이 집합은 fullscreen element전체 화면 해제가 실행될 문서 집합입니다. 단, docs의 마지막 문서에 top layerfullscreen flag가 설정된 요소가 두 개 이상 있을 경우, 그 문서는 여전히 전체 화면 상태를 유지할 수 있습니다.

exit fullscreen 알고리즘은 문서 doc에 대해 다음 단계를 수행합니다:

  1. promise를 새 프로미스로 생성합니다.

  2. docfully active가 아니거나 docfullscreen element가 null이면 promiseTypeError 예외로 reject하고 반환합니다.

  3. resize를 false로 설정합니다.

  4. docscollect documents to unfullscreen 알고리즘을 doc에 대해 실행한 결과로 설정합니다.

  5. topLevelDocdocnode navigabletop-level traversableactive document로 설정합니다.

  6. topLevelDocdocs에 포함되어 있고, simple fullscreen document이면, doctopLevelDoc으로 설정하고 resize를 true로 설정합니다.

  7. docfullscreen elementconnected가 아니면:

    1. Append (fullscreenchange, docfullscreen element)를 docpending fullscreen 이벤트 목록에 추가합니다.

    2. 전체 화면 해제 알고리즘을 docfullscreen element에 대해 실행합니다.

  8. promise를 반환하고, 나머지 단계는 병렬로 실행합니다.

  9. 화면 방향 완전 해제 단계 알고리즘을 doc에 대해 실행합니다.

  10. resize가 true이면, doc의 viewport를 "normal" 크기로 재설정합니다.

  11. docfullscreen element가 null이면, promise를 undefined로 resolve하고 이 단계를 종료합니다.

  12. exitDocscollect documents to unfullscreen 알고리즘을 doc에 대해 실행한 결과로 설정합니다.

  13. descendantDocs순서가 지정된 집합으로 생성하고, docdescendant navigablesactive documentsfullscreen element가 null이 아닌 문서를 트리 순서대로 포함합니다.

  14. 각각의 exitDoc에 대해 exitDocs에서 다음을 수행합니다:

    1. Append (fullscreenchange, exitDocfullscreen element)를 exitDocpending fullscreen 이벤트 목록에 추가합니다.

    2. resize가 true이면, 전체 화면 해제 알고리즘을 exitDoc에 대해 실행합니다.

    3. 그 외에는 전체 화면 해제 알고리즘을 exitDocfullscreen element에 대해 실행합니다.

  15. 각각의 descendantDoc에 대해 descendantDocs에서 다음을 수행합니다:

    1. Append (fullscreenchange, descendantDocfullscreen element)를 descendantDocpending fullscreen 이벤트 목록에 추가합니다.

    2. 전체 화면 해제 알고리즘을 descendantDoc에 대해 실행합니다.

    문서들이 전체 화면 해제되는 순서는 관찰할 수 없습니다. 전체 화면 단계 실행하기 알고리즘이 트리 순서로 호출되기 때문입니다.

  16. promise를 undefined로 resolve합니다.

exitFullscreen() 메서드 단계는 exit fullscreen 알고리즘을 this에 대해 실행한 결과를 반환합니다.


아래는 이벤트 핸들러(및 해당 이벤트 핸들러 이벤트 타입) 목록으로, ElementDocument 객체가 이벤트 핸들러 IDL 속성으로 지원해야 합니다:

이벤트 핸들러 이벤트 핸들러 이벤트 타입
onfullscreenchange fullscreenchange
onfullscreenerror fullscreenerror

이것들은 ShadowRootWindow 객체에서는 지원되지 않으며, 어떤 네임스페이스에서도 Element 객체에 대한 이벤트 핸들러 컨텐츠 속성도 없습니다.

4. UI

사용자 에이전트는 requestFullscreen()exitFullscreen()를 활용하여 네이티브 미디어 전체 화면 컨트롤을 구현할 것을 권장합니다.

사용자가 종료 요청을 시작하면, 이는 전체 화면 완전 종료 알고리즘을 종료 요청 단계의 일부로 트리거합니다. 이는 모든 종료 감시자보다 우선합니다.

사용자 에이전트는 사용자가 필요하다고 판단하는 경우 종료 요청이나 exitFullscreen() 호출 없이도 모든 전체 화면 세션을 종료할 수 있습니다.

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" 문자열로 식별되는 정책 제어 기능을 정의합니다. 해당 기능의 기본 허용 목록'self'입니다.

문서권한 정책은 해당 문서의 모든 콘텐츠가 전체 화면으로 전환될 수 있는지 여부를 결정합니다. 문서에서 비활성화된 경우, 해당 문서의 모든 콘텐츠는 전체 화면 기능을 사용할 수 없습니다.

HTML allowfullscreen 속성은 iframe 요소에 중첩된 문서의 컨테이너 정책에 영향을 미칩니다. allow 속성으로 재정의하지 않는 한, iframe에 allowfullscreen을 설정하는 것은 <iframe allow="fullscreen *">와 동일하며, 자세한 내용은 Permissions Policy § 6.3.1 allowfullscreen에서 설명합니다.

7. 보안 및 개인정보 보호 고려사항

사용자 에이전트는 오버레이 등을 통해 최종 사용자가 무엇이 전체 화면으로 표시되고 있는지 인지할 수 있도록 해야 합니다. 사용자 에이전트는 항상 동작하는 전체 화면 종료 방법을 제공하고, 이를 사용자에게 알려야 합니다. 이는 사이트가 전체 화면 상태에서 사용자 에이전트나 운영체제 환경을 모방하여 사용자를 속이는 것을 방지하기 위한 것입니다. requestFullscreen() 정의도 참고하세요.

자식 navigable의 콘텐츠가 전체 화면으로 전환되려면, 권한 정책을 통해 명시적으로 허용되어야 합니다. 이는 HTML allowfullscreen 속성, HTML iframe 요소의 적절한 allow 속성 선언, 또는 해당 Permissions-Policy HTTP 헤더를 통한 방식으로 허용할 수 있습니다. 이는 해당 문서가 중첩되는 경로를 통해 전달됩니다.

이로써 제3자 콘텐츠가 명확한 권한 없이 전체 화면으로 전환되는 것을 방지할 수 있습니다.

이 명세서는 이전에 ::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; 외. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. URL: https://drafts.csswg.org/css2/
[CSS-POSITION-4]
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. Mathematical Markup Language (MathML™) 1.01 Specification. 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; 외. Scalable Vector Graphics (SVG) 1.1 (Second Edition). 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"
};

dictionary FullscreenOptions {
  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?