Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Javascript: Предзагрузка группы пронумерованных изображений

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

kaybbo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. Прелоадинг изображений. Каталог где они расположены имеет такое-же имя как и сама текущая страница (только без .htm). В этом каталоге перебираются и предзагружаются все имеющиеся изображения окончание фиксируется когда встречается первое изображение с размерами 30х30px (null):
 

Код:

var imgCount=0;
var isDone=false;
while(isDone==false){
imgArray[imgCount]=new Image();
imgArray[imgCount].src='images/'+dirName+'/gallery/g'+(imgCount+1)+'.jpg';
imh=imgArray[imgCount].height
if(imh==30){
isDone=true;
}
imgCount++;
}

 

 
Проблема в том, что локально (при разработке) это работает прекрасно, но как только я тестирую все это в инете, после заведомо последнего изображения скрипт продолжает считать дальше, т.к. (проверив alert'ом) следующее, после последнего, изобрахение имеет размер не 30х30px, а 0px !!! Добавив проверку на равенство нулю (imh==0), я вдруг обнаружил, что нулевой размер имеют и некоторые действительно существующие изображения, т.е. скрипт, в этом случае заканчивает свою работу раньше!
Почему такое может происходить??? Я уже замучился...
 
Заранее благодарен за помощь.




Уточнил название, было — "Javascript: Вопрос". — Svarga.

Всего записей: 121 | Зарегистр. 03-09-2003 | Отправлено: 10:58 30-06-2004 | Исправлено: Svarga, 17:56 30-06-2004
Vladroman



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kaybbo

Цитата:
изображение с размерами 30х30px (null)

Что-то я этого совсем не понял. С чего ты взял, что отсутствующее изображение имеет такие размеры?
 

Цитата:
следующее, после последнего, изобрахение имеет размер не 30х30px, а 0px  

Мне, конечно, никогда отсутствующее изображение измерять не приходилось, но если оно имеет хоть какой-то размер, то явно нулевой.
 

Цитата:
Почему такое может происходить???

Не надо измерять размер отсутствующего изображения, это только в философии возможно. Надо проверять на отсутствие изображения. Проверь, чему будет равен imgArray[imgCount] в этом случае, может на это и сможешь проверять.

Всего записей: 413 | Зарегистр. 23-09-2003 | Отправлено: 11:25 30-06-2004
kaybbo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
С чего ты взял, что отсутствующее изображение имеет такие размеры?

это размер изображения которое показывет Explorer в случае, например, если нужное изображение не найдено (тот самый перечеркнутый белый квадратик).

Цитата:
...если оно имеет хоть какой-то размер, то явно нулевой

как я уже сказал:

Цитата:
...я вдруг обнаружил, что нулевой размер имеют и некоторые действительно существующие изображения


Цитата:
Проверь, чему будет равен imgArray[imgCount]

imgArray[imgCount] всегда равен [object]
 
Конструкция вида:
imgArray[imgCount].onerror=notExist;
тоже не выявляет факта отсутствия изображения...
 
Че делать-то???!!!

Всего записей: 121 | Зарегистр. 03-09-2003 | Отправлено: 12:13 30-06-2004
Vladroman



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kaybbo
Показываться вместо этого крестика может все, что угодно, это зависит не только от браузера, но даже от надстройки над ним. Более того, крестик этот имеет те размеры, которые заданы (если заданы) отсутствующему изображению. А если изображение вообще не показывается, как у тебя, то и крестик не показывается, и его размер - 0. Проверять таким образом - это извращение.
 

Цитата:
Че делать-то???!!!

Идешь сюда http://pyramidin.narod.ru/jscript/clientref13/index.htm и читаешь там про объект "Image".

Всего записей: 413 | Зарегистр. 23-09-2003 | Отправлено: 12:50 30-06-2004
kaybbo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Идешь сюда...

Сходил. Решения не нашел. И хотя там и написано, что:

Цитата:
...Однако событие error будет включаться неверным URL в тэге IMG или неверными данными изображения.

Вот это:

Код:
imgArray[imgCount].src='images/'+dirName+'/gallery/g'+(imgCount+1)+'.jpg';
imgArray[imgCount].onerror=notExist;

почему-то не работает.
 
Например имеем:

Код:
imgArray[imgCount].src='images/pcoffice/gallery/g23.jpg'

но в этом каталоге нет g23.jpg! а функция notExist не вызывается!!!
 
Почему???

Всего записей: 121 | Зарегистр. 03-09-2003 | Отправлено: 15:29 30-06-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaybbo
А с какой целью происходит предзагрузка группы картинок?
 
Может всё проще можно организовать...

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 17:58 30-06-2004
Vladroman



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kaybbo

Цитата:
Почему???

Там же есть "Пример 4":
 
Пример 4: Обработчик события вызывает функцию. В тэге IMG обработчик onError вызывает функцию badImage при возникновении ошибок во время загрузки изображения.
 
<SCRIPT>function badImage(theImage) {
   alert('Error: ' + theImage.name + ' did not load properly.')}</SCRIPT>
<FORM><IMG NAME="imageBad2" SRC="orca.gif" ALIGN="left" BORDER="2"
   onError="badImage(this)"></FORM>
 
Это работает?

Всего записей: 413 | Зарегистр. 23-09-2003 | Отправлено: 17:58 30-06-2004
kaybbo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А с какой целью происходит предзагрузка группы картинок?  

Есть галлерея реализованная в виде таблицы (напр. 4х2):

Код:

<table width="100%"  border="0" cellspacing="3" cellpadding="0" id="galleryTable">
<tr>
<td><img onClick="enlargeImg()" id="g0" src="images/pcoffice/gallery/g1.jpg" width="90" height="70"></td>
<td><img onClick="enlargeImg()" id="g1" src="images/pcoffice/gallery/g2.jpg" width="90" height="70"></td>
<td><img onClick="enlargeImg()" id="g2" src="images/pcoffice/gallery/g3.jpg" width="90" height="70"></td>
<td><img onClick="enlargeImg()" id="g3" src="images/pcoffice/gallery/g4.jpg" width="90" height="70"></td>
</tr>
<tr>
<td><img onClick="enlargeImg()" id="g4" src="images/pcoffice/gallery/g5.jpg" width="90" height="70"></td>
<td><img onClick="enlargeImg()" id="g5" src="images/pcoffice/gallery/g6.jpg" width="90" height="70"></td>
<td><img onClick="enlargeImg()" id="g6" src="images/pcoffice/gallery/g7.jpg" width="90" height="70"></td>
<td><img onClick="enlargeImg()" id="g7" src="images/pcoffice/gallery/g8.jpg" width="90" height="70"></td>
</tr>
</table>

Та функция, на которой я застрял, нужна скорее для ПОДСЧЕТА общего количества изображений в данной галлерее. Это число нужно для того, чтобы знать сколько всего страниц в галлерее. Номера страниц в виде 1 2 3 4 ... выводятся под таблицей. Цыфры - это ссылки для переключения между страницами. Они вычисляются и выводятся сразу после загрузки страницы:

Код:

imgCount=imgArray.length;
numOfPages=Math.ceil(imgCount/imgPerPage);
var pgList='';
for(i=1;i<=numOfPages;i++){
pgList+='<a href="#" onClick="return changePage()" id="p'+i+'">'+i+' </a>';
}
document.all['galleryPages'].innerHTML=pgList;

Всего записей: 121 | Зарегистр. 03-09-2003 | Отправлено: 08:29 01-07-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaybbo

Цитата:
Та функция, на которой я застрял, нужна скорее для ПОДСЧЕТА общего количества изображений в данной галлерее.

 
Скрипт, насколько я понимаю, использует параметры, переданные в URL, т. е. что-то наподобие http://site.com/gallery.html?num=10 — выводим галерею №10... так?
 
Почему бы не передавать дополнительным параметром количество изображений в галерее?
 
Иначе, по-моему, ни один здравомыслящий посетитель не станет дожидаться предзагрузки всех картинок при том, что отображаться будут только несколько из них...

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 04:35 04-07-2004
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Javascript: Предзагрузка группы пронумерованных изображений


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.B0ard 2000-2026

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru