Skip to content

Commit e0fa7fb

Browse files
committed
fix(docs): declare touch-action to block pinch zoom
Add a root touch-action declaration to exported HTML and keep the gesture interception fallback so mobile browsers receive a pre-gesture signal to disable pinch zoom.
1 parent 6cd5e39 commit e0fa7fb

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

scripts/export-docs-site.mjs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { basename, join, resolve } from 'node:path';
55
import { spawn } from 'node:child_process';
66

77
const args = process.argv.slice(2);
8+
const mobileZoomLockStyle =
9+
'<style id="disable-mobile-zoom-style">html,body{touch-action:pan-x pan-y;}</style>';
810
const mobileZoomLockScript = `<script id="disable-mobile-zoom">(function(){let lastTouchEnd=0;const cancel=event=>event.preventDefault();document.addEventListener('gesturestart',cancel,{passive:false});document.addEventListener('gesturechange',cancel,{passive:false});document.addEventListener('gestureend',cancel,{passive:false});document.addEventListener('touchstart',event=>{if(event.touches.length>1){cancel(event);}}, {passive:false});document.addEventListener('touchend',event=>{const now=Date.now();if(now-lastTouchEnd<=300){cancel(event);}lastTouchEnd=now;},{passive:false});})();</script>`;
911

1012
function getArgValue(flag, defaultValue) {
@@ -74,8 +76,14 @@ function rewriteTextAsset(content, basePath) {
7476
rewritten = rewritten.replace(cssUrlPattern, `url(${basePath}/`);
7577
}
7678

77-
if (rewritten.includes('</head>') && !rewritten.includes('id="disable-mobile-zoom"')) {
78-
rewritten = rewritten.replace('</head>', `${mobileZoomLockScript}</head>`);
79+
if (rewritten.includes('</head>')) {
80+
if (!rewritten.includes('id="disable-mobile-zoom-style"')) {
81+
rewritten = rewritten.replace('</head>', `${mobileZoomLockStyle}</head>`);
82+
}
83+
84+
if (!rewritten.includes('id="disable-mobile-zoom"')) {
85+
rewritten = rewritten.replace('</head>', `${mobileZoomLockScript}</head>`);
86+
}
7987
}
8088

8189
return rewritten;

0 commit comments

Comments
 (0)