fix(android): le premier appui n'est plus mange par le clavier

Un bouton touche pendant qu'un champ a le focus recevait d'abord le
blur : le clavier se repliait, la reserve de body.typing disparaissait,
la page remontait - et le bouton n'etait plus sous le doigt quand le clic
partait. Il fallait appuyer deux fois, la premiere ne servant qu'a fermer
le clavier.

Empecher le defaut du mousedown empeche le TRANSFERT DE FOCUS, pas le
clic : le champ garde le curseur, rien ne bouge, et l'appui atteint sa
cible du premier coup. Pose sur toute la page - le piege n'a aucune
raison d'etre propre aux reglages.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-28 17:40:19 +01:00
parent b3f725137e
commit 0930a866c2
+19
View File
@@ -764,6 +764,25 @@ function showLog(on) {
}
document.getElementById('btnCfg').addEventListener('click', openSettings);
// LE PREMIER APPUI NE DOIT PAS ETRE MANGE PAR LE CLAVIER.
//
// Un bouton touche pendant qu'un champ a le focus recevait d'abord le blur :
// le clavier se repliait, la reserve de body.typing disparaissait, la page
// remontait - et le bouton n'etait plus sous le doigt quand le clic partait. Il
// fallait donc appuyer deux fois, la premiere ne servant qu'a fermer le
// clavier. C'est ce qui se voyait sur "Set this code".
//
// Empecher le defaut du mousedown empeche le TRANSFERT DE FOCUS, pas le clic :
// le champ garde le curseur, rien ne bouge, et l'appui atteint sa cible du
// premier coup. Pose une fois pour toute la page - le piege n'a aucune raison
// d'etre propre aux reglages.
document.addEventListener('mousedown', function (ev) {
var b = ev.target.closest('button');
if (!b) return;
var a = document.activeElement;
if (a && (a.tagName === 'INPUT' || a.tagName === 'TEXTAREA')) ev.preventDefault();
}, true);
function esc(s) {
return String(s == null ? '' : s).replace(/[&<>"]/g, function (c) {
return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;' }[c];