Presumo di avere un'area <div>
contenitore di input con testo, cursori e pulsanti al suo interno e voglio inibire i doppi tocchi accidentali in questo <div>
. Quanto segue non inibisce lo zoom nell'area di input e non riguarda il doppio tocco e lo zoom al di fuori della mia <div>
area. Ci sono variazioni a seconda dell'app del browser.
L'ho appena provato.
(1) Per Safari su iOS e Chrome su Android ed è il metodo preferito. Funziona ad eccezione delle app Internet su Samsung, dove disabilita i doppi tocchi non del tutto <div>
, ma almeno sugli elementi che gestiscono i tocchi. Ritorna return false
, con l'eccezione su text
e range
input.
$('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) Facoltativamente per l'app Internet integrata su Android (5.1, Samsung), inibisce i doppi tocchi su <div>
, ma inibisce lo zoom su <div>
:
$('selector of <div> input area').on('touchstart touchend',disabledoubletap);
(3) Per Chrome su Android 5.1, disabilita del tutto il doppio tocco, non inibisce lo zoom e non fa nulla riguardo al doppio tocco negli altri browser. L'inibizione del doppio tocco <meta name="viewport" ...>
è irritante, perché <meta name="viewport" ...>
sembra una buona pratica.
<meta name="viewport" content="width=device-width, initial-scale=1,
maximum-scale=5, user-scalable=yes">