Je suppose que j'ai une <div>
zone de conteneur d'entrée avec du texte, des curseurs et des boutons, et que je souhaite empêcher les doubles-taps accidentels <div>
. Ce qui suit n'empêche pas le zoom sur la zone de saisie et ne concerne pas le double-tap et le zoom en dehors de ma <div>
zone. Il existe des variations en fonction de l'application du navigateur.
J'ai juste essayé.
(1) Pour Safari sur iOS et Chrome sur Android, c'est la méthode préférée. Fonctionne sauf pour l'application Internet sur Samsung, où elle désactive les doubles-taps non pas sur le plein <div>
, mais au moins sur les éléments qui gèrent les taps. Il retourne return false
, à l'exception des entrées text
et range
.
$('selector of <div> input area').on('touchend',disabledoubletap);
function disabledoubletap(ev) {
var preventok=$(ev.target).is('input[type=text],input[type=range]');
if(preventok==false) return false;
}
(2) En option pour l'application Internet intégrée sur Android (5.1, Samsung), empêche les doubles tapotements sur <div>
, mais empêche le zoom sur <div>
:
$('selector of <div> input area').on('touchstart touchend',disabledoubletap);
(3) Pour Chrome sur Android 5.1, désactive du tout le double-tap, n'interdit pas le zoom et ne fait rien pour le double-tap dans les autres navigateurs. L'inhibition du double tap sur <meta name="viewport" ...>
est irritante, car <meta name="viewport" ...>
semble être une bonne pratique.
<meta name="viewport" content="width=device-width, initial-scale=1,
maximum-scale=5, user-scalable=yes">