Что я пытаюсь сделать?Погрузчик .gif преждевременно скрывается
Я пытаюсь показать изображение загрузчика, пока изображения вытаскиваются с серверов Flickr в карусель водяного колеса. После того, как набор изображений будет загружен в аккордеон и водяное колесо, изображение загрузчика будет скрыто.
В чем проблема?
Изображение загрузчика скрывается преждевременно, что приводит к тому, что пользователь не указывает, что изображения по-прежнему загружаются. Изображения занимают от 6 до 10 секунд для загрузки внутри каждого раздела аккордеона, что достаточно для того, чтобы пользователь мог покинуть страницу.
Я видел проблему, возникающую как в Firefox, так и в Chrome. Как ни странно, были некоторые очень редкие случаи, когда изображение загрузчика фактически оставалось до тех пор, пока изображения не были полностью загружены.
Что я наделал?
Я экспериментировал с расположением $("#loader").hide();
внутри моих двух функций JavaScript.
- Внутри функции обратного вызова, но после вызова плагина водяного колеса с настройками конфигурации.
- Внешняя функция обратного вызова, но внутри
displayContent()
. - Нигде. Наверное, я надеялся, что он автоматически скроется после загрузки изображений ...: P
Вы можете просмотреть фотогалерею и разметку/скрипты here. Ниже приведен главный сценарий и разметка.
HTML
<!-- lines 348-364 -->
<!-- Tabs -->
<ul id="tabs">
<li><a href="#" name="tab1">Glass Windows</a></li>
<li><a href="#" name="tab2">Lampshades</a></li>
<li><a href="#" name="tab3">Metal and Glass Sculptures</a></li>
<li><a href="#" name="tab4">Piñatas</a></li>
<li><a href="#" name="tab5">Wood Sculptures</a></li>
</ul>
<!-- Content in the accordion -->
<div id="content">
<img src="images/loader.gif" id="loader"/>
<div id="tab1" class="thumbs"></div>
<div id="tab2" class="thumbs"></div>
<div id="tab3" class="thumbs"></div>
<div id="tab4" class="thumbs"></div>
<div id="tab5" class="thumbs"></div>
</div>
JavaScript
// lines 264-293
//
$('#' + tabName).jflickrfeed({
limit: 20,
qstrings: {
set: photoSet,
nsid: '[email protected]'
},
useTemplate: false,
itemCallback: function(item){
$(this).append("<a href='" + item.link + "' target='" + "_blank'" + ">"
+ "<img src='" + item.image_n + "' alt=''/></a>");
}
}, function (data) {
// Special carousel stuff to make the
// showcase look spiffy
//
$('#' + tabName).waterwheelCarousel({
speed: 500,
separation: 200,
flankingItems: 3
}).css('position', '');
// Once the waterwheel is finished loading
// we can hide the loader
//
$("#loader").hide();
});
ПРИМЕЧАНИЕ: Сайт все еще находится в стадии происходит "отзывчивый" тестирование, так что вещи могут выглядеть немного шероховатой на другой экран размеры ...
Вы уверены, что изображения по-прежнему загружаются, когда погрузчик исчезает? возможно, плагин с водяным колесом вызывает задержку появления изображений, я попытался использовать некоторые разрывы кода, и похоже, что изображения добавляются к функции itemCallback и после загрузки всех изображений (вы можете видеть, что они отображаются на одном время) загрузчик скрыт. Я бы пошел с проблемой плагина водяного колеса здесь – arieljuod
@arieljuod Определенно правдоподобно, хотя мне очень странно, что легкий плагин займет так много времени, чтобы организовать все эти изображения ... – Rob
У меня есть идея, проверьте мой ответ – arieljuod