Поддельная загрузка / индикатор выполнения для медленной страницы без Ajax - PullRequest
2 голосов
/ 26 июля 2010

Я занимаюсь разработкой сайта, который обслуживает несколько медленных (до 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 строки загрузки.

Вопросы:

  1. Это даже хороший способ создать такойподдельная панель загрузки?
  2. Если да, есть ли способ запретить браузерам отображать div при возврате в историю браузера?

Спасибо за любые подсказки.

Вывод:

похоже, что нет легкого способа подделать его таким образом.Я собираюсь получить данные Ajax с реальной полосой загрузки.

Ответы [ 2 ]

0 голосов
/ 26 июля 2010

Есть много данных для отображения, следовательно, медленный поиск данных?Если да, то как насчет сокращения набора данных, который вы изначально загружаете и запрашиваете последующие блоки данных с помощью запросов ajax?

0 голосов
/ 26 июля 2010

Если бы ваш запрос был оптимизирован, чтобы он не выполнялся так долго, вам не понадобился бы поддельный индикатор выполнения.

Однако здесь вы имеете дело с кешем браузера, поэтому вы ничего не можете сделать, чтобы заставить браузер показывать или не показывать что-либо, если только не выполняется запрос страницы, когда они нажимают кнопку «назад».

По-настоящему хакерский способ сделать это - проверить уже готовый документ, видим ли #dim fadein и сделать его невидимым.

Таким образом, когда происходит щелчок, он начинает отображаться, и если они нажимают кнопку «Назад», браузер отображает страницу, проверяет, видна ли она «уже», и просто проверяет, не видна ли она, если не нажата кнопка / ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...