ОК, я схожу с ума по этому поводу. Я читал здесь в SO и гугл об этом, у меня даже есть набор preloader (найденный здесь в SO), но ни один из плагинов / кода, который я нашел, не помог мне.
Что я хочу сделать: дождаться предварительной загрузки всех изображений и только после этого выполнять весь другой код JavaScript. Насколько я понимаю, это может (но не обязательно) иметь сообщение "загрузка ...".
Дело в том, что у меня есть довольно большое изображение на заднем плане тела и 2 других изображения, которые также больше, и поэтому я хотел бы предварительно загрузить их так, чтобы они сразу показывались и не имели такой уродливой "загрузки" эффект изображения.
Это то, что я сейчас использую, но это не хорошо:
$(document).ready(function()
{
preloadImages();
...some other code...
function preloadImages(){
imagePreloader([
'images/1.png',
'images/2.jpg',
'images/3.png',
]);
}
function imagePreloader(arrayOfImages) {
$(arrayOfImages).each(function(){
(new Image()).src = this;
});
}
}
Не знаю, может, мне стоит вызвать этот предварительный загрузчик где-нибудь из .ready ()? или что-то подобное, пожалуйста, помогите ...
Кстати, да, я также прочитал этот пост, и я не знаю почему, но .ready () работает для меня быстрее: (
EDIT:
Хорошо, наконец-то я получил эту вещь на работу. Моя проблема? Я неправильно установил ожидание. Теперь это мой код: у меня есть загрузочный div, который я показываю выше всего, а затем, когда все изображения загружаются (используя $ (window) .load (function () {...}); как я и предлагал, скрыть этот div.
<div id="loading">
<div id="waiting">
<img class="loadingGif" src="images/loading.gif">
</div>
</div>
#loading
{
background-size: 100%;
background-color:#000;
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
z-index:999;
}
#waiting
{
margin-left: auto;
margin-right: auto;
position:absolute;
top: 39%;
left: 27.81%;
width: 45%;
height: 150px;
background-color: #FFF;
border: 12px solid #FF771C;
text-align: center;
}
А мой код jQuery такой:
$(window).load(function()
{
$('#loading').addClass('hidden');
...
}