В Mobile Safari я не могу сфокусироваться на текстовом поле после установки периода задержки. Проблема связана с некоторыми примерами кода. Если при нажатии кнопки вы запускаете .focus(), все работает так, как ожидалось. Если вы ведете фокус на обратном вызове, например, функцию setTimeout, тогда он не работает ТОЛЬКО в мобильном сафари. Во всех других браузерах есть задержка, затем происходит фокус.
Смутно, событие "focusin" запускается даже в мобильном сафари. Это (и ~ подобные ~ комментарии в SO) заставляют меня думать, что это ошибка мобильного сафари. Любые указания будут приняты.
Я тестировал в эмуляторе и на iPhone 3GS/4 iOS4.
Пример HTML:
<!DOCTYPE html> 
  <html lang='en'> 
    <head> 
      <title>Autofocus tests</title> 
      <meta content='width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0' name='viewport'> 
      <meta content='yes' name='apple-mobile-web-app-capable'> 
    </head> 
    <body>
      <h1> 
        Show keyboard without user focus and select text:
      </h1> 
      <p> 
        <button id='focus-test-button'> 
          Should focus on input when you click me after .5 second
        </button> 
        <input id='focus-test-input' type='number' value='20'> 
      </p> 
      <script type="text/javascript"> 
        //<![CDATA[
        var button = document.getElementById('focus-test-button');
        var input  = document.getElementById('focus-test-input');
        input.addEventListener('focusin', function(event) {
          console.log('focus');
          console.log(event);
        });
        button.addEventListener('click', function() {
          // *** If triggered immediately - functionality occurs as expected
          // input.focus();
          // *** If called by callback - triggers the focusin event, but does not bring up keyboard or cursor
          var t = setTimeout("input.focus();",500);
        });
        //]]>
      </script>
    </body>
  </html>
~ Подобные вопросы ~ SO: