Я работаю над веб-приложением, которое должно быть совместимо с Internet Explorer 8 (вы знаете, совместимо с HELL). Дело в том, что я загружаю файл, который позже обрабатывается кодом PHP и обновляет страницу. Когда у меня есть обработанный файл, я использовал этот файл для вставки данных в таблицу, поэтому мне нужна панель процессов и блокировка пользовательского интерфейса, когда я вставляю эти данные (мне нужно вызвать другой процесс PHP для каждой строки).Блокировка пользовательского интерфейса на готовом документе
Проблема заключается в том, следующий, я хочу заблокировать этот интерфейс, у меня есть логика и все проблемы совместимости решены; но после 5 дней работы я не могу блокировать пользовательский интерфейс. Это минимальный код (который инкапсулирует все, что нам нужно), чтобы упростить эту идею:
$(document).ready({
(...)
$("#title").html('some text');
$("#bar").html('');
$.blockUI({message: $('#window'),css:{width:'303px'}});
go = true;
while (go){
$.ajax({<ASYNC FALSE AJAX CALL});
if (!file.lines) go = false;
<update progress>
}
$.unblockUI();
(...)
});
Очевидно, что $ .blockUI должен блокировать основной поток (пока я не разблокирует) и показать персонализированный окно, которое есть следующий код является:
<div id="window" style="display: none; cursor: default">
<div id="title_bar">
<div id="titulos">some text</div>
<div id="cerrar"></div>
</div>
<div id="body">
<img src="an icon"
alt="enviando" border="0" width="33" height="33" id="enviar">
<p class="titulo" id='title'></p>
<p class="texto" id='bar'></p>
<br />
</div>
</div>
Я думаю, что проблема в том, что I'm выполнение этого блока на нить, которая не является основной поток, и я не могу на самом деле блокирует пользовательский интерфейс; но мне нужен этот блок, потому что я вынужден заставить пользователя ждать, пока я обработаю всю информацию.
Спасибо, ребята, я надеюсь, вы могли бы помочь мне в этом.
Попробуйте удалить 'async: false'. Это очень плохая практика, и это означает, что ваш пользовательский интерфейс не будет обновлен, что будет мешать используемому плагину 'blockUI'. –
Любая ошибка, которую вы получаете. или у вас есть скрипка? –
Я не могу удалить «async: false», я знаю, что это плохая практика, но мне нужно это на этом фрагменте кода @RoryMcCrossan. У меня нет какой-либо ошибки, консоль разработчика говорит типичный предупреждающий о 'async: false'. –