#jquery #document-ready #blockui
#jquery #документ готов #blockui
Вопрос:
Я использую плагин jQuery BlockUI для добавления заставки загрузки на страницу, загрузка которой занимает несколько секунд из-за запросов CAML. Проблема в том, что страница загружается до того, как BlockUI отобразится на долю секунды и исчезнет. Похоже, что JS выполняет их в неправильном порядке, и я не могу понять, почему. Есть ли что-то, что я могу изменить в коде, или BlockUI просто не предназначен для использования без Ajax?
$(document).ready(function() {
$.blockUI();
});
$(window).ready(function() {
$.unblockUI();
});
В заголовке html я вызываю jquery, blockui и common.js скрипт, содержащий запросы CAML и загружающий элементы страницы (в таком порядке). The common.js скрипт также запускается на DOM ready, что, как я подозреваю, может быть частью проблемы…
Ответ №1:
Попробуйте это:
<html>
<head>
<script src="jquery.js"></script>
<script src="blockui.js"></script>
<script type="text/javascript">
$.blockUI();
</script>
</head>
<body>
…
</body>
</html>
Это должно блокировать пользовательский интерфейс до того, как будет загружено что-либо еще.
Редактировать: Хорошо, я потрудился на самом деле посмотреть … $.blockUI
поддерживает функцию обратного вызова.
Итак, вы могли / должны сделать это:
$(document).ready(function() {
$.blockUI({
onBlock: function() {
// Invoke your CAML stuff here.
}
});
});
Комментарии:
1. Ну, мне не нужно было отрывистое замечание — не то чтобы я сам не удосужился прочитать документацию, но то, что вы предлагаете, отлично работает. Спасибо.
2. @kramden88 Я совсем не хотел показаться грубым 😉 Рад, что это сработало для вас.
3. Я борюсь с этим уже несколько дней! Спасибо! Лень читать, как ты 🙂
4. @vzwick Он работает некорректно в IE8. Блокировка страницы, но сообщение Div не отображается вообще, пока скрипты не завершат загрузку. Есть какие-либо обходные пути для IE8?