JQuery закругленные углы + фокус () в IE8 - PullRequest
0 голосов
/ 18 декабря 2009

Я занимаюсь разработкой веб-приложения в 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

1 Ответ

0 голосов
/ 03 ноября 2010

Поскольку вы делаете тайм-аут, и он работает, может быть, элемент формы загружается после того, как документ готов? И.Е. загружен с помощью ajax или создан с помощью javascript?

Я знаю, что JQuery уголки пытаются использовать CSS3 для каждого браузера, но если это IE, он делает кучу div. Может быть, в IE6 / 7 это займет больше времени, поэтому время ожидания не требуется>

...