Focus() не работает в setTimeout на iOS
Метод jQuery focus(), похоже, не работает при использовании из setTimeout в iOS.
Итак,
setTimeout( function () {
// Appears to have no effect in iOS, fine in Chrome/Safari/Firefox/IE
$('.search').focus();
}, 500);
Но сам по себе,
// works fine.
$('.search').focus();
См. следующий пример:
http://jsfiddle.net/nwe44/ypjkH/1/
Если вызов focus() выполняется вне setTimeout, он работает, внутри него нет. Это вдвойне любопытно, как работают другие методы. Например, в моем jsFiddle я могу изменить цвет границы, просто не фокусирую его. Есть идеи?
Ответы
Ответ 1
Проверить скрипт, который я обновил на http://jsfiddle.net/ypjkH/7/
$('#selector').click( function (e) {
e.preventDefault();
setTimeout( doFocus
, 3000);
});
function doFocus() {
$('.search').focus().css('border', '1px solid red');
}
Ответ 2
Для моего приложения это работает, если вы просто поместите x.focus() в отдельную функцию (ноер) и вызовите ее из setTimeout