2014-10-31 20 views
5

L'autofocus è, in teoria, completamente non supportato in Safari mobile (http://caniuse.com/#feat=autofocus). Tuttavia, stiamo osservando questo strano comportamento quando un evento touchstart è associato a document (indipendentemente dal fatto che la funzione abbia o meno un comportamento) quando un clic avviene ovunque nella pagina, il primo input con autofocus diventa attivo e la tastiera su schermo viene visualizzata .Collegamento a un evento touchstart che fa sì che l'autofocus si concentri su qualsiasi clic in Mobile Safari

Questo può essere riprodotto utilizzando iOS 8 nel simulatore iOS. Ecco il codice html e javascript minimo di riprodurre il problema:

<html> 
<head> 
<script> 
document.addEventListener("touchstart", function() {}); 
</script> 
</head> 

<body> 
<input type="text"> 
<input type="text" autofocus="autofocus"> 
</body> 
</html> 

Ed ecco un jsfiddle: http://jsfiddle.net/qd858nob/

Basta fare clic su un punto qualsiasi all'esterno degli ingressi, e il secondo ingresso diventerà autofocused. Idealmente mi piacerebbe trovare una soluzione globale che risolva tutto ciò senza dover rimuovere l'autofocus da tutti i nostri elementi di input.

+1

Sto colpendo fondamentalmente lo stesso problema, ma chiamando .focus() a livello di codice al caricamento della pagina. Non appena viene toccato un punto qualsiasi della pagina, la messa a fuoco viene spostata sull'ingresso e viene visualizzata la tastiera. Hai segnalato questo ad Apple? È nuovo per iOS 8. – Dan

risposta