Fix fullscreen on iOS Safari (webkitEnterFullscreen on video)
This commit is contained in:
parent
43f59851b1
commit
0755c22d1f
@ -665,14 +665,36 @@
|
|||||||
updateAudio();
|
updateAudio();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Fullscreen
|
// Fullscreen — must handle iOS Safari separately (no fullscreen API on container,
|
||||||
|
// only on the video element via webkitEnterFullscreen)
|
||||||
|
function enterFullscreen() {
|
||||||
|
// iOS Safari path: only video.webkitEnterFullscreen works
|
||||||
|
if (typeof video.webkitEnterFullscreen === 'function' && !document.fullscreenEnabled) {
|
||||||
|
try { video.webkitEnterFullscreen(); return; } catch (e) {}
|
||||||
|
}
|
||||||
|
// Standard Fullscreen API on the video element (most reliable cross-browser)
|
||||||
|
if (video.requestFullscreen) { video.requestFullscreen().catch(() => {}); return; }
|
||||||
|
if (video.webkitRequestFullscreen) { video.webkitRequestFullscreen(); return; }
|
||||||
|
// Fallback: try the container
|
||||||
|
if (playerFrame.requestFullscreen) { playerFrame.requestFullscreen().catch(() => {}); return; }
|
||||||
|
if (playerFrame.webkitRequestFullscreen) { playerFrame.webkitRequestFullscreen(); return; }
|
||||||
|
// Last-resort iOS path
|
||||||
|
if (typeof video.webkitEnterFullscreen === 'function') {
|
||||||
|
try { video.webkitEnterFullscreen(); } catch (e) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function exitFullscreen() {
|
||||||
|
if (document.exitFullscreen) { document.exitFullscreen().catch(() => {}); return; }
|
||||||
|
if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); return; }
|
||||||
|
if (typeof video.webkitExitFullscreen === 'function') { try { video.webkitExitFullscreen(); } catch (e) {} }
|
||||||
|
}
|
||||||
|
function isFullscreen() {
|
||||||
|
return !!(document.fullscreenElement || document.webkitFullscreenElement || video.webkitDisplayingFullscreen);
|
||||||
|
}
|
||||||
btnFs.addEventListener('click', (e) => {
|
btnFs.addEventListener('click', (e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
if (!document.fullscreenElement) {
|
if (isFullscreen()) exitFullscreen();
|
||||||
(playerFrame.requestFullscreen || playerFrame.webkitRequestFullscreen).call(playerFrame);
|
else enterFullscreen();
|
||||||
} else {
|
|
||||||
(document.exitFullscreen || document.webkitExitFullscreen).call(document);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
video.addEventListener('click', () => { video.muted = !video.muted; video.volume = 1.0; updateAudio(); });
|
video.addEventListener('click', () => { video.muted = !video.muted; video.volume = 1.0; updateAudio(); });
|
||||||
video.addEventListener('dblclick', (e) => { e.preventDefault(); btnFs.click(); });
|
video.addEventListener('dblclick', (e) => { e.preventDefault(); btnFs.click(); });
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user