На моем сайте ряд операций может занять много времени.Как отобразить диалоговое окно jquery перед загрузкой всей страницы?
Когда я знаю, что на загрузку страницы потребуется некоторое время, я хочу отобразить индикатор прогресса во время загрузки страницы.
В идеале я хотел бы сказать что-то вдоль линий:
$("#dialog").show("progress.php");
и есть, что наложение на верхней части страницы, которая грузила (исчезающую после завершения операции).
Кодирование индикатора выполнения и отображение прогресса не является проблемой, проблема заключается в получении индикатора прогресса, чтобы всплывать, пока страница загружается. Я пытаюсь использовать диалоги JQuery для этого, но они появляются только после того, как страница уже загружена.
Это должно быть распространенной проблемой, но я недостаточно знаком с JavaScript, чтобы узнать, как это сделать.
Вот простой пример, чтобы проиллюстрировать проблему. В приведенном ниже коде не отображается диалоговое окно до 20 секундной паузы. Я пробовал в Chrome и Firefox. На самом деле, я даже не вижу текст «Подождите ...».
Вот код, я использую:
<html>
<head>
<link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" />
<script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script>
<script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.dialog.js"></script>
</head>
<body>
<div id="please-wait">My Dialog</div>
<script type="text/javascript">
$("#please-wait").dialog();
</script>
<?php
flush();
echo "Waiting...";
sleep(20);
?>
</body>
</html>
+1 Хороший ответ. Ударьте меня на него :) Примечание: скрипт jQuery должен быть загружен до того, как этот код выполнит (очевидно) –
Правильно, хороший момент Джош. Как только файл jquery.js будет кэширован локально, это будет всего лишь миллисекунда, хотя :) – Seb
Ну, похоже, что он должен работать, но когда я пытаюсь локально (Chrome и Firefox через Apache), диалоговое окно не открывается перед загрузкой страницы. Я отправлю пример кода в моем первоначальном вопросе выше. –