1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
|
---
title: Utiliser le mode plein écran
slug: Web/Guide/DOM/Using_full_screen_mode
tags:
- API
- DOM
- Plein écran
- Tutoriel
translation_of: Web/API/Fullscreen_API
---
<p>{{DefaultAPISidebar("Fullscreen API")}}</p>
<p class="summary">L'<strong>API Fullscreen</strong> <em>(plein écran)</em> fournit un moyen simple de présenter du contenu web en utilisant l'ensemble de l'écran de l'utilisateur. <span id="result_box" lang="fr"><span>L'API vous permet de diriger facilement le navigateur pour faire en sorte qu'un élément et ses enfants, le cas échéant, occupent entièrement l'écran, éliminant toute l'interface utilisateur du navigateur et les autres applications de l'écran pendant ce temps.</span></span></p>
<div class="note"><strong>Note :</strong> Pour le moment, tous les navigateurs n'utilisent pas la version non préfixée de cet API. <span id="result_box" lang="fr"><span>Consultez le tableau récapitulant les <a href="#Préfixes">préfixes</a> et les différences de noms entre eux (vous pouvez également utiliser </span></span> <a href="https://github.com/rafrex/fscreen">Fscreen</a> <span lang="fr"><span> pour l'accès du fournisseur à l'API).</span></span></div>
<h2 id="Specification" name="Specification">Activation du mode plein écran</h2>
<p>En partant d'un élément que vous aimeriez afficher en plein écran ({{ HTMLElement("video") }}, par exemple), vous pouvez le passer en mode plein écran simplement en appelant sa méthode {{ domxref("Element.requestFullscreen()") }} .</p>
<p>Prenons cet élément {{ HTMLElement("video") }} :</p>
<pre class="brush: html"><video controls id="myvideo">
<source src="somevideo.webm"></source>
<source src="somevideo.mp4"></source>
</video>
</pre>
<p>Nous pouvons mettre cet élément video en plein écran avec un script de cette façon :</p>
<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">var</span> elem <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">getElementById</span><span class="punctuation token">(</span><span class="string token">"myvideo"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
<span class="keyword token">if</span> <span class="punctuation token">(</span>elem<span class="punctuation token">.</span>requestFullscreen<span class="punctuation token">)</span> <span class="punctuation token">{</span>
elem<span class="punctuation token">.</span><span class="function token">requestFullscreen</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
<span class="punctuation token">}</span></code></pre>
<h3 id="Différences_de_présentation">Différences de présentation</h3>
<p>Il est important de savoir qu'il y a une différence clef entre les implémentations de Gecko et WebKit : Gecko ajoute automatiquement des règles CSS à l'élément afin qu'il remplisse l'écran : "<code>width: 100%; height: 100%</code>". WebKit ne fait pas ça ; à la place, il centre l'élément sans le redimensionner au milieu d'un écran noir. Pour obtenir le même comportement que Gecko dans WebKit, vous devez ajouter votre propre règle "<code>width: 100%; height: 100%;</code>" à l'élément :</p>
<pre class="brush: css">#myvideo:-webkit-full-screen {
width: 100%;
height: 100%;
}
</pre>
<p>Dans l'autre sens, si vous essayez d'émuler le comportement de WebKit sur Gecko, vous devez placer l'élément que vous souhaitez présenter dans un autre élément, que vous mettrez en plein écran, et utiliser des règles CSS pour ajuster l'apparence de l'élément interne.</p>
<h3 id="Notification">Notification</h3>
<p>Quand le mode plein écran est activé, le document qui contient l'élément reçoit un événement de type {{ event("fullscreenchange") }} . Lors de la sortie du mode plein écran, le document reçoit à nouveau l'événement {{ event("fullscreenchange") }} . Notez que l'événement en lui-même {{ event("fullscreenchange") }} ne fournit aucune information si le document est en train d'entrer ou de sortir du mode plein écran, mais si le document a une valeur non nulle {{ domxref("document.fullscreenElement", "fullscreenElement") }} , vous savez que vous êtes en mode plein écran.</p>
<h3 id="Lorsqu'une_demande_de_plein_écran_échoue">Lorsqu'une demande de plein écran échoue</h3>
<p>Il n'est pas garanti que vous soyez capable de passer en mode plein écran. Par exemple, les élements {{ HTMLElement("iframe") }} possèdent l'attribut {{ HTMLAttrXRef("allowfullscreen", "iframe") }} pour permettre à leur contenu d'être affiché en mode plein écran. Certains contenus comme les greffons fenêtrés ne peuvent être représentés en plein écran. Essayer de placer un élément qui ne peut être affiché en mode plein écran (ou le parent ou le descendant d'un tel élément) ne marchera pas. A la place, l'élément qui a demandé le mode plein écran recevra un événement <code>mozfullscreenerror</code> . Quand une demande de plein écran échoue, Firefox écrit un message d'erreur dans la console Web expliquant pourquoi la demande n'a pas pu aboutir. <span id="result_box" lang="fr"><span>Dans Chrome et les versions plus récentes d'Opera, aucun avertissement de ce type n'est généré.</span></span></p>
<div class="note">
<p><strong>Note :</strong> Les requêtes de Fullscreen doivent être appelées depuis un gestionnaire d'évènements ou sinon, elles seront refusées.</p>
</div>
<h2 id="Sortie_du_mode_plein_écran">Sortie du mode plein écran</h2>
<p>L'utilisateur peut toujours sortir du mode plein écran quand il le désire ; voir {{ anch("Choses que vos utilisateurs doivent savoir") }}. Vous pouvez également le faire en appelant la méthode {{domxref("Document.exitFullscreen()")}} .</p>
<h2 id="Autres_informations">Autres informations</h2>
<p>Le {{ domxref("document") }} fournit des informations supplémentaires pouvant être utiles lorsque vous développez des applications web en plein écran :</p>
<dl>
<dt>{{ domxref("document.fullscreenElement", "fullscreenElement") }}</dt>
<dd>L'attribut <code>fullscreenElement</code> vous indique l'{{ domxref("element") }} qui est actuellement affiché en plein écran. S'il est non nul, le document est en mode plein écran. S'il est nul, le document n'est pas en mode plein écran.</dd>
<dt>{{ domxref("document.fullscreenEnabled", "fullscreenEnabled") }}</dt>
<dd>L'attribut <code>fullscreenEnabled</code> vous indique si le document est actuellement dans un état qui permettrait d'activer le mode plein écran ou non.</dd>
</dl>
<h2 id="Things_your_users_want_to_know" name="Things_your_users_want_to_know">Choses que vos utilisateurs doivent savoir</h2>
<p>Vous voulez faire savoir à vos utilisateurs qu'il peuvent utiliser la touche <kbd>ECHAP</kbd> (ou <kbd>F11</kbd>) pour sortir du mode plein écran.</p>
<p>En même temps, naviguer sur une autre page, changer d'onglet, ou changer d'application (en utilisant, par exemple, <kbd>Alt</kbd>-<kbd>Tab</kbd> ) pendant le mode plein écran, implique la sortie du mode plein écran de toute façon.</p>
<h2 id="Specification" name="Specification">Exemple</h2>
<p>Dans cet exemple, une vidéo est affichée dans une page web. Taper sur l'une des touches <kbd>Retour</kbd> ou <kbd>Entrée</kbd>, permet à l'utilisateur de passer d'une présentation dans une fenêtre à une présentation en mode plein écran de la vidéo.</p>
<p><a href="/samples/domref/fullscreen.html">Voir l'exemple sur une page</a></p>
<h3 id="Action_sur_la_touche_Entrée">Action sur la touche <kbd>Entrée</kbd></h3>
<p>Quand la page est chargée, ce code est exécuté pour mettre en place un évènement "listener" permettant de surveiller la moindre action sur la touche <kbd>Entrée</kbd> .</p>
<pre class="brush: js">document.addEventListener("keydown", function(e) {
if (e.keyCode == 13) {
toggleFullScreen();
}
}, false);
</pre>
<h3 id="Passer_en_mode_plein_écran">Passer en mode plein écran</h3>
<p>Ce code est appelé lorsque l'utilisateur appuie sur la touche <kbd>Entrée</kbd>, comme vu plus haut.</p>
<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">toggleFullScreen</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
<span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>document<span class="punctuation token">.</span>fullscreenElement<span class="punctuation token">)</span> <span class="punctuation token">{</span>
document<span class="punctuation token">.</span>documentElement<span class="punctuation token">.</span><span class="function token">requestFullscreen</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
<span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
<span class="keyword token">if</span> <span class="punctuation token">(</span>document<span class="punctuation token">.</span>exitFullscreen<span class="punctuation token">)</span> <span class="punctuation token">{</span>
document<span class="punctuation token">.</span><span class="function token">exitFullscreen</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
<span class="punctuation token">}</span>
<span class="punctuation token">}</span>
<span class="punctuation token">}</span></code></pre>
<p> Dans un premier temps, la valeur de l'attribut <code>fullscreenElement</code> est analysée dans le {{ domxref("document") }} (en contrôlant s'il est préfixé par <code>moz-, ms-</code> ou <code>webkit-</code>). Si la valeur est nulle, le document est actuellement en mode normal, donc nous devons passer en mode plein écran. Le passage en mode plein écran est assuré en appelant {{ domxref("element.requestFullscreen()") }}.</p>
<p>Si le mode plein écran est déjà activé (<code>fullscreenElement</code> est non nul), nous appelons {{ domxref("document.exitFullscreen()") }}.</p>
<h2 id="Préfixes_2"><a name="Préfixes">Préfixes</a></h2>
<p>Pour le moment, tous les navigateurs n'ont pas implémenté la version sans préfixe de l'API (pour l'accès du fournisseur de l'API, vous pouvez utiliser <a href="https://github.com/rafrex/fscreen">Fscreen</a>) . <span id="result_box" lang="fr"><span>Voici le tableau résumant les préfixes et les différences de noms entre eux </span></span><span lang="fr"><span>:</span></span></p>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Standard</th>
<th scope="col">Blink (Chrome & Opera)</th>
<th scope="col">Gecko (Firefox)</th>
<th scope="col">Internet Explorer 11</th>
<th scope="col">Edge</th>
<th scope="col">Safari (WebKit)</th>
</tr>
<tr>
<td>{{domxref("Document.fullscreen")}}</td>
<td><code>webkitIsFullScreen</code></td>
<td><code>mozFullScreen</code></td>
<td><em>-</em></td>
<td><code>webkitIsFullScreen</code></td>
<td><code>webkitIsFullScreen</code></td>
</tr>
<tr>
<td>{{domxref("Document.fullscreenEnabled")}}</td>
<td><code>webkitFullscreenEnabled</code></td>
<td><code>mozFullScreenEnabled</code></td>
<td><code>msFullscreenEnabled</code></td>
<td><code>webkitFullscreenEnabled</code></td>
<td><code>webkitFullscreenEnabled</code></td>
</tr>
<tr>
<td>{{domxref("Document.fullscreenElement")}}</td>
<td><code>webkitFullscreenElement</code></td>
<td><code>mozFullScreenElement</code></td>
<td><code>msFullscreenElement</code></td>
<td><code>webkitFullscreenElement</code></td>
<td><code>webkitFullscreenElement</code></td>
</tr>
<tr>
<td>{{domxref("Document.onfullscreenchange")}}</td>
<td><code>onwebkitfullscreenchange</code></td>
<td><code>onmozfullscreenchange</code></td>
<td><code>MSFullscreenChange</code></td>
<td><code>onwebkitfullscreenchange</code></td>
<td><code>onwebkitfullscreenchange</code></td>
</tr>
<tr>
<td>{{domxref("Document.onfullscreenerror")}}</td>
<td><code>onwebkitfullscreenerror</code></td>
<td><code>onmozfullscreenerror</code></td>
<td><code>MSFullscreenError</code></td>
<td><code>onwebkitfullscreenerror</code></td>
<td><code>onwebkitfullscreenerror</code></td>
</tr>
<tr>
<td>{{domxref("Document.exitFullscreen()")}}</td>
<td><code>webkitExitFullscreen()</code></td>
<td><code>mozCancelFullScreen()</code></td>
<td><code>msExitFullscreen()</code></td>
<td><code>webkitExitFullscreen()</code></td>
<td><code>webkitExitFullscreen()</code></td>
</tr>
<tr>
<td>{{domxref("Element.requestFullscreen()")}}</td>
<td><code>webkitRequestFullscreen()</code></td>
<td><code>mozRequestFullScreen()</code></td>
<td><code>msRequestFullscreen()</code></td>
<td><code>webkitRequestFullscreen()</code></td>
<td><code>webkitRequestFullscreen()</code></td>
</tr>
</thead>
</table>
<h2 id="Specification" name="Specification">Spécifications</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Specification</th>
<th scope="col">Statut</th>
<th scope="col">Commentaire</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName("Fullscreen")}}</td>
<td>{{Spec2("Fullscreen")}}</td>
<td>Définition initiale.</td>
</tr>
</tbody>
</table>
<h2 id="BrowserCompatibility" name="BrowserCompatibility">Compatibilité des navigateurs</h2>
<p><span id="result_box" lang="fr"><span>Tous les navigateurs implémentent cette API.</span> <span>Néanmoins certains l'implémentent avec des préfixes avec des noms légèrement différents</span></span> <span id="result_box" lang="fr"><span>;</span> <span>par exemple, au lieu de <code>requestFullscreen ()</code>, il y a <code>MozRequestFullScreen ()</code>.</span></span></p>
<p>{{ CompatibilityTable() }} </p>
<div id="compat-mobile">
<div id="compat-desktop">
<table class="compat-table">
<tbody>
<tr>
<th>Fonctionnalité</th>
<th>Chrome</th>
<th>Edge</th>
<th>Firefox (Gecko)</th>
<th>Internet Explorer</th>
<th>Opera</th>
<th>Safari</th>
</tr>
<tr>
<td>Basic support</td>
<td>15 {{ property_prefix("-webkit") }}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{ CompatGeckoDesktop("9.0") }} {{ property_prefix("-moz") }}<br>
{{CompatGeckoDesktop("47")}} (behind <code>full-screen-api.unprefix.enabled</code>)</td>
<td>11 {{ property_prefix("-ms") }}</td>
<td>12.10</td>
<td>5.0 {{ property_prefix("-webkit") }}</td>
</tr>
<tr>
<td><code>fullscreenEnabled</code></td>
<td>20 {{ property_prefix("-webkit") }}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{ CompatGeckoDesktop("10.0") }} {{ property_prefix("-moz") }}<br>
{{CompatGeckoDesktop("47")}} (behind <code>full-screen-api.unprefix.enabled</code>)</td>
<td>11 {{ property_prefix("-ms") }}</td>
<td>12.10</td>
<td>5.1 {{ property_prefix("-webkit") }}</td>
</tr>
</tbody>
</table>
</div>
<div id="compat-mobile">
<table class="compat-table">
<tbody>
<tr>
<th>Fonctionnalité</th>
<th>Android</th>
<th>Chrome</th>
<th>Edge</th>
<th>Firefox Mobile (Gecko)</th>
<th>IE Mobile</th>
<th>Opera Mobile</th>
<th>Safari Mobile</th>
</tr>
<tr>
<td>Basic support</td>
<td>{{ CompatUnknown() }}</td>
<td>28 {{ property_prefix("-webkit") }}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{ CompatGeckoMobile("9.0") }}{{ property_prefix("-moz") }}<br>
{{CompatGeckoMobile("47")}} (behind <code>full-screen-api.unprefix.enabled</code>)</td>
<td>{{ CompatUnknown() }}</td>
<td>{{ CompatUnknown() }}</td>
<td>{{ CompatUnknown() }}</td>
</tr>
<tr>
<td><code>fullscreenEnabled</code></td>
<td>{{ CompatUnknown() }}</td>
<td>28 {{ property_prefix("-webkit") }}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{ CompatGeckoMobile("10.0") }} {{ property_prefix("moz") }}<br>
{{CompatGeckoMobile("47")}} (behind <code>full-screen-api.unprefix.enabled</code>)</td>
<td>{{ CompatUnknown() }}</td>
<td>{{ CompatUnknown() }}</td>
<td>{{ CompatUnknown() }}</td>
</tr>
</tbody>
</table>
</div>
</div>
<h2 id="Voir_aussi">Voir aussi</h2>
<ul>
<li><a href="https://developer.mozilla.org/fr/docs/Web/Guide/DOM/Using_full_screen_mode">Utiliser le mode plein écran</a></li>
<li>{{ domxref("Element.requestFullscreen()") }}</li>
<li>{{ domxref("Document.exitFullscreen()") }}</li>
<li>{{ domxref("Document.fullscreen") }}</li>
<li>{{ domxref("Document.fullscreenElement") }}</li>
<li>{{ cssxref(":fullscreen") }}, {{cssxref("::backdrop")}}</li>
<li>{{ HTMLAttrXRef("allowfullscreen", "iframe") }}</li>
</ul>
|