track fullscreen state manually, don't rely on fullscreenchange

This commit is contained in:
Johannes
2026-05-04 04:23:01 +02:00
parent f410d69f2d
commit baa2741181

View File

@@ -203,14 +203,15 @@
z_drag=null;
if(document.fullscreenElement && z_scale>1) img.style.cursor='grab';
});
let is_fullscreen = false;
let t_start_x = 0, t_start_y = 0;
img.addEventListener('touchstart', e => {
if (!document.fullscreenElement) return;
if (!is_fullscreen) return;
t_start_x = e.touches[0].clientX;
t_start_y = e.touches[0].clientY;
}, { passive: true });
img.addEventListener('touchend', e => {
if (!document.fullscreenElement) return;
if (!is_fullscreen) return;
const dx = e.changedTouches[0].clientX - t_start_x;
const dy = e.changedTouches[0].clientY - t_start_y;
if (Math.abs(dx) > Math.abs(dy) && Math.abs(dx) > 50) {
@@ -218,11 +219,12 @@
}
}, { passive: true });
img.addEventListener('click', e => {
if (!document.fullscreenElement) return;
if (!is_fullscreen) return;
e.clientX < window.innerWidth / 2 ? prev() : next();
});
document.addEventListener('fullscreenchange', ()=>{
if(!document.fullscreenElement) reset_zoom();
is_fullscreen = !!document.fullscreenElement;
if(!is_fullscreen) reset_zoom();
});
const PRELOAD_AHEAD = 3;
@@ -288,10 +290,12 @@
};
btnF.onclick=()=>{
if(!document.fullscreenElement){
img.requestFullscreen();
if(!is_fullscreen){
img.requestFullscreen().catch(()=>{});
is_fullscreen = true;
}else{
document.exitFullscreen();
document.exitFullscreen().catch(()=>{});
is_fullscreen = false;
}
};