2016-09-23 3 views
0

У этого вопроса есть ссылка на решение, размещенное здесь. https://stackoverflow.com/a/2600261/5086633Фокус не работает в IE даже после добавления большой задержки

Я столкнулся с аналогичной проблемой в IE, но даже после добавления большой задержки 200 это не работает должным образом в моем приложении. Поле ввода фокусируется только с перерывами, оно пропускает фокус на поле ввода даже после того, как страница будет отображаться в IE. Я также пробовал называть функцию setTimeout от $(document).ready(function(){ и $(window).load(function() {, как указано ниже, без успеха.

Этот код отлично работает, когда я тестирую его локально и как простой файл html, но не в моем приложении.

Может ли кто-нибудь помочь мне исправить/или дать ключ для отладки/этой проблемы в IE, так что поле ввода получает фокус каждый раз, когда страница отображается в IE?

Сноска: - Он отлично работает в Firefox (без задержки), а для Chrome требуется небольшая задержка для работы focus.

$(document).ready(function(){ 

    setTimeout(function() { document.getElementById('testfocus').focus(); }, 200); 

}); 

$(window).load(function() { 
// executes when complete page is fully loaded, including all frames, objects and images 
setTimeout(function() { document.getElementById('testfocus').focus(); }, 200); 
}); 

setTimeout(function() { document.getElementById('testfocus').focus(); }, 200);
<html> 
 
<head> 
 
</head> 
 
<body> 
 
    
 
<input id="testfocus"/> 
 

 
</body> 
 
</html>

ответ

0

Исправлена ​​ошибка, с которой эта игра задерживалась, увеличила ее и обнаружила, что кнопка ввода получает фокус, когда страница отображается setTimeout(function() { document.getElementById('testfocus').focus(); }, 200); Однако я не знаю реальной причины, почему эта задержка требуется в Браузеров IE и Chrome.

1

Очень странно. Это работает для меня ... это не очень большой ответ (win7, IE11, jquery 2.2.4). Какую конкретную версию IE/OS/JQuery вы используете?

Выполняется ли «код фрагмента кода» ниже вашего кода выше работы/не работает?

Как насчет этого jsfiddle: https://jsfiddle.net/u68gmzyc/?

$(document).ready(function(){ 
    document.getElementById('testfocus').focus(); 
}); 

Также ... можете ли вы проверить консоль на наличие сообщений об ошибках javascript? Может быть, что-то еще не работает, и побочный эффект заключается в том, что ваш код на самом деле не работает?

1

https://stackoverflow.com/a/2600261/5086633 предназначено для IE7.

Следующие работы каждый раз на всех браузерах.

<body onload="document.getElementById('testfocus').focus();">

Вы можете увидеть, если Favicon показывает вращающийся круг (нагрузку), так как основное внимание будет происходить только тогда, когда загрузка завершена.

Я попытался с ниже, который работает на всех браузерах:

<html> 
<head></head> 
<body onload="document.getElementById('testfocus').focus();"> 
<iframe src="http://www.healthcarereformdigest.com/wp-content/uploads/2014/07/forms.jpg"></iframe> 
<input id="testfocus"/> 
</body> 
</html> 

(Добавлено Iframe и этот образ, как его тяжелый и он принимает looong для загрузки).

Если это не удается в вашем приложении, вы можете нажать Tab, чтобы увидеть, какой элемент имеет фокус, а затем проверить, что, поскольку он может иметь несколько операторов focus().

0

Кроме того, если целью является просто сфокусировать определенный элемент на загрузке страницы, вы можете добавить к нему атрибут автофокусировки. Затем он автоматически сфокусируется без необходимости использования JS.

<input type="text" autofocus="autofocus" id="testfocus" />