Предварительная загрузка изображей с progress bar'ом

Если изображения на странице занимают достаточно большой объем, можно позаботиться об их предварительной загрузке, дабы dial-up пользователи не видели постепенного заполнения.

Для этого нам потребуется разделить страницу на две части: одна с progress bar'ом, другая с основным содержанием. Это сделаем с помощью div'ов. JavaScript код предварительной загрузки выглядит так:

 

var lengthPBar = 200;

var heightPBar = 20;

var yourImages = new Array("img/ajax.png","img/javascript.png","img/php.png","img/html.png");

var tmp = (yourImages.length<10)?10:yourImages.length;

var preImages = new Array();

var i;

 

function loadImages() {

for (i = 0; i < yourImages.length; i++) {

preImages[i] = new Image();

preImages[i].src = yourImages[i];

}

i=0;

checkLoad();

}

 

function checkLoad() {

if(i == tmp) {

document.getElementById("preload").style.display = "none";

document.getElementById("afterPreload").style.display = "block";

}

else if(isNaN(preImages[i]) || preImages[i].complete) {

document.getElementById("img"+i).style.background = 'gray';

i++;

setTimeout("checkLoad()", 100);

}

else setTimeout("checkLoad()", 100);

}

 

Тело будет выглядеть примерно так:

 

<div id="preload">

<center><br /><br /><br /><br />

<b>загрузка...</b><br /><br />

</center>

<script type="text/javascript">

document.write("<table width='"+lengthPBar+"'height='"+heightPBar+"' border='2'><tr>");

for (i = 0; i < tmp; i++)

document.write("<td id='i"+i+"' bgcolor='white'></td>");

document.write("</tr></table>");   

loadImages();

</script>

</div>

 

<div id="afterPreload" style="display: none">что хотите...</div>

Оформление, естественно, можно настроить как угодно, изменяя цвета и размеры. 

 

Проблемы:

 

Из-за display='none' могут возникнуть проблемы с индексацией некоторыми поисковыми роботами, поэтому если важна индексация, можно разнести progress bar и содержимое по разным страницам.




Рекомендуем почитать

 

Добавить комментарий


Ваше имя:


Комментарий:


Введите: Картинка