Я занимаюсь разработкой сайта, который обслуживает несколько медленных (до 4 секунд времени загрузки) страниц из-за обширных запросов к базе данных.
Чтобы пользователи знали, что загружается новая страница (также для предотвращения нескольких кликов), я показываю div с поддельной панелью загрузки на странице, где пользователи нажимали ссылку на страницу медленной загрузки.
На самом деле, показ поддельного загрузочного div работает очень хорошо,DOM старой страницы (с поддельной панелью загрузки) по-прежнему отображается при загрузке новой страницы, что означает, что раздел загрузки отображается до тех пор, пока новая страница не будет готова для отображения.
Вот каксделанный.Часть HTML:
<!-- link example which will execute the javascript -->
<a href="link/to/slow/page/" class="loading">slow page</a>
<!-- full screen div which gets displayed when clicking a
"loading" class link. -->
<div id="dim" style="display:none; top:0; left:0; width:100%; height:100%; z-index:9999;">
<div id="loading">
<p>loading data, please wait...</p>
<img src="loading.gif" alt="loading..." />
</div>
</div>
Часть Javascript (jQuery):
$(".loading").each(function() {
$(this).click(function() {
$("#dim").fadeIn();
});
return true;
});
Проблема теперь заключается в том, что если пользователь щелкает обратно в браузере (только что протестировано)с FF 3.6) с медленной страницы, иногда отображается div строки загрузки.
Вопросы:
- Это даже хороший способ создать такойподдельная панель загрузки?
- Если да, есть ли способ запретить браузерам отображать div при возврате в историю браузера?
Спасибо за любые подсказки.
Вывод:
похоже, что нет легкого способа подделать его таким образом.Я собираюсь получить данные Ajax с реальной полосой загрузки.