Вызов .focus () для текстового поля во время загрузки jquery-ui dialog-with-tabs прерывает рендеринг диалога - PullRequest
0 голосов
/ 26 августа 2009

Если я использую

setTimeout(function{$('#myElement').focus()}, 10)`

во время загрузки диалогового окна jquery-ui, содержащего вкладки, рендеринг вкладок прерывается! В частности, их фоновые изображения не появляются, что делает их похожими на мусор. Это ТОЛЬКО происходит, когда я устанавливаю тайм-аут для документа, готового сфокусировать первый ввод текста во всплывающем окне.

Это поведение странное. Мысли

Примечание: это происходит только в Firefox и Opera.

Ответы [ 3 ]

1 голос
/ 26 августа 2009

Это пахнет как классическая проблема параллелизма для меня. Вы изменяете код, пока jQuery работает над ним, и это, вероятно, нарушает некоторые предположения в коде, что состояние DOM будет оставаться стабильным.

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

Кроме того, вы действительно хотите подождать 10 миллисекунд и затем выполнить фокус ()?

0 голосов
/ 26 августа 2009

Если вы копируете код напрямую, возможно, вы забыли () после фокуса.

setTimeout($('#myElement').focus(), 10);
0 голосов
/ 26 августа 2009

Вы получаете ошибку?

Вы уверены, что элемент находится в домене и виден, что позволяет фокусироваться при вызове функции.

Исправляет ли увеличение значения тайм-аута?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...