focus () ne fonctionne pas dans setTimeout sur iOS

La méthode focus () de jQuery ne semble pas fonctionner lorsqu’elle est utilisée depuis un setTimeout sous iOS.

Alors,

setTimeout( function () { // Appears to have no effect in iOS, fine in Chrome/Safari/Firefox/IE $('.search').focus(); }, 500); 

Mais seul,

 // works fine. $('.search').focus(); 

Voir l’exemple suivant:

http://jsfiddle.net/nwe44/ypjkH/1/

Si l’appel focus () est fait en dehors de setTimeout, cela fonctionne, mais pas à l’intérieur. Ceci est doublement curieux car d’autres méthodes fonctionnent. Par exemple, dans mon jsFiddle, je peux changer la couleur de la bordure, mais pas la focaliser. Des idées?

Vérifiez le violon que j’ai mis à jour à http://jsfiddle.net/ypjkH/7/

  $('#selector').click( function (e) { e.preventDefault(); setTimeout( doFocus , 3000); }); function doFocus() { $('.search').focus().css('border', '1px solid red'); } 

Pour mon application cela fonctionne, si vous venez de mettre x.focus () dans une fonction distincte (nother) et appelez-le depuis le setTimeout