JQuery UI Асинхронный AJAX-запрос установлен на ложные причины проблем - PullRequest
3 голосов
/ 06 октября 2009

У меня проблема с нашим любимым браузером IE (все версии) и элементом управления вкладками из jquery. Я загружаю свой контент для вкладок с опцией ajax. Проблема сейчас в том, что я должен делать это синхронно, поэтому каждый запрос за другим вызывает асинхронность. не работает для меня или просто очень глючит. Но это не проблема. Проблема в том, что IE не применяет обработку состояния ui до того, как он блокирует каждое выполнение над кодом jquery. Похоже, что IE ведет себя здесь не так, как все остальные браузеры. Это довольно странная причина, как только запрос закончен, обработанный класс применяется к элементу tab, просто чтобы мгновенно исчезнуть, потому что все сделано.

Кто-нибудь знает, что это может быть? известная проблема?

Кстати, он отлично работает, когда я устанавливаю асинхронную опцию в true.

Ти

1 Ответ

3 голосов
/ 07 октября 2009

Да, так работает IE. По сути, браузеры работают так:

while (stillRunning()) {
    renderDOM();
    getNextInputEvent();
    runScripts();
}

Другими словами, вы не обновите DOM, пока не закончатся скрипты. Теперь даже IE будет обновлять DOM вне последовательности в некоторых случаях (в голову приходит только запуск alert () или verify ()), но обычно это не так. Другие браузеры иногда обновляют DOM не по порядку, и это то, с чем вы сталкиваетесь: случай, когда ваши браузеры, отличные от IE, обновляют DOM, несмотря на то, что все еще застряли в стадии выполнения скрипта (потому что вы делаете синхронный вызов, это не завершает сценарий, пока вы не получите возвращаемое значение).

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

Именно поэтому большинство веб-приложений используют асинхронные вызовы; потому что их выполнение не замораживает ваш интерфейс.

...