Я занимаюсь разработкой веб-приложения в ASP.NET MVC. Недавно я добавил закругленные углы с помощью плагина jQuery Rounded Corners (http://plugins.jquery.com/project/corners).. Это, кажется, расстроило IE8 (но не 6 или 7, или Firefox), потому что я больше не могу устанавливать фокус в $ (document) .ready ().
Вот пример проблемы:
$(document).ready(function() {
// using jQuery rounded corners plugin
$("#centre").corners();
// this doesn't have any effect in IE8
$("#emailAddress").focus();
});
где #centre содержит нашу страницу входа, а #emailAddress - первое поле внутри нее.
Поле emailAddress должно получить фокус ввода. Это происходит в IE6 & 7 и Firefox, но не в IE8. Если вы закомментируете две линии закругленных углов, то это сработает.
Я также попытался переместить линию фокусировки в $ (window) .load ():
$(window).load(function() {
$("#emailAddress").focus();
});
Это тоже не работает. Однако, если я напишу установить фокус с использованием таймаута, то это сработает:
$(document).ready(function() {
// using jQuery rounded corners plugin
$("#centre").corners();
// this doesn't have any effect in IE8
setTimeout(function() { $("#emailAddress").focus(); }, 100);
});
Я не уверен, почему установка фокуса после тайм-аута должна работать. Может быть потому, что операции с закругленными углами изменяют DOM (они добавляют серию DIV вверху и внизу контейнера, чтобы создать закругленную границу), что занимает некоторое время, и focus () происходит до завершения DOM обновление?
Спасибо за вашу помощь
Ed