![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Innuendo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 24.12.2005 Где: Молдова Репутация: 2 Всего: 6 |
Приветствую.
Опять я, и по опять по той же теме, что задавал неделю назад. Мне толком и не помогли =( Есть страница - галлерея. При нажатии на превьюшку открывается нормальная фота в новом плавающем диве. Фоты грузятся предварительно в массиве через new Image() Я сделал заглушку уже как мне сказали, т.е. по умолчанию по превьюшкам щёлкать до фени, а после window.onload уже активируются нажатия. Но если я кликаю по картинке сразу после загрузки, то сначала появляются кнопки в центре экрана, а потом догружается изображение. Полуается криво, потому что он центрует относительно его длины и ширины, а так как оно не загружено - его длина и ширина 0 -0 . Я попробовал сделать загрузку. При открытии страницы показывается див с лоадингом и весь массив проверяется на myImages[i].complete. Если все загружены то див с лоадингом убираем, и активизируем нажатие превьюшек... Но! дива вообще не видно, т.е. myImages[i].complete сразу равняется true у всех картинок, и первая картинка всё равно догружается позже. вот ссылка: http://luminitaverde.by.ru/photo_st.html вот куски кода:
Заранее спасибо, надеюсь на помощь. -------------------- =) |
|||
|
||||
| JSman |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 279 Регистрация: 10.7.2006 Репутация: нет Всего: 4 |
для исправления кривизны меняй размеры DIV.
также советую использовать таблицы стилей. для изображений советую использовать событие onload. |
|||
|
||||
| Innuendo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 24.12.2005 Где: Молдова Репутация: 2 Всего: 6 |
onload для проверки?
Ну с дивом я проверку решил, но вот странное дело. Я добавил проверку на загрузку фотографии на которую нажали.И пока он проверяет он крутит див-загрузки. Открываю сайт. Дива загрузки не было, то есть все 12 картинок complete=true при том мгновенно. Но щёлкаю по любой фотке, и он её проверяет на complete. Первая проверка false. Он секунду крутит див и потом уже всё прорисовывает ровно и нормально. Почему первая фотка была false, если он до этого проверил и все были true? =) -------------------- =) |
|||
|
||||
| JSman |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 279 Регистрация: 10.7.2006 Репутация: нет Всего: 4 |
у объекта image есть событие onload. я ему доверяю больше, чем свойству complete.
короче, алгоритм следующий: каждому image'у присвоить событию onload функцию. эта функция будет ставить флажок в твоем массиве, что данное изображение загружено. 2й проверки - не надо. и еще совет: на сайте должно быть 2 вида изображений. нормального размера и маленькие. я с твоим вопросом серьезно не сидел. это просто совет. как бы я решил твою задачу... при клике на маленькое показываешь DIV. описание DIV: в стиле DIV укажи background-repeat:no-repeat; background-image:url(loading.gif); background-position:center; loading.gif в нем просто надпись "загрузка..." img в div'е имеет visibility:hidden; ---------------------------------------- Добавлено @ 14:06 ой как жаль остальная часть не отправилась Добавлено @ 14:07 |
|||
|
||||
| JSman |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 279 Регистрация: 10.7.2006 Репутация: нет Всего: 4 |
img в DIV'е - это будет изображение с хорошим качеством. пусть имеет ID = "img_ID"
не задавай в теге IMG атрибут SRC var img = document.all('img_ID'); при клике на маленькое изображение: 1. img.style.visibility = "hidden" 2. img.src = "новый URL" 3. показать DIV 4. ждать событие img.onload код: window.onload = function () { var img = document.all('img_ID'); img.onload = function () { img.style.visibility = "visible" } } |
|||
|
||||
| Innuendo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 24.12.2005 Где: Молдова Репутация: 2 Всего: 6 |
ну у меня и так 2 типа изображений: большие и маленькие...
c .onload у меян кстати не хотело работать. Я тогда перешел на complete. Ну в общем всё работает уже вроде.. Но всё равно спасибо за помощь. А вот такой вопрос. Если я не задал ещё срк new Image(), то что он проверяет на onload? как можно понять такой код (я видел в темплейте галереи одной) var preload = new Image(); preload.onLoad = function(){ preload.src = '' ... и т.д. } -------------------- =) |
|||
|
||||
| Innuendo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 24.12.2005 Где: Молдова Репутация: 2 Всего: 6 |
щас вроде бы всё должно работать, но работает нормлаьно тока в ФФ.
вот пример: http://luminitaverde.by.ru/newphoto.html Я щас смотрю всё, пытаюсь разобрать этот код: http://www.huddletogether.com/projects/lightbox/lightbox.js там странно как-то ImgPreloader=new Image(); ImgPreloader.onload = function() { ... } я если так у себя задам, то лоадинг будет вечно кружится... У меня есть тока .src задам раньше проверки на лоад картинка покажется И зачем в конце этих проверок у них return false; ? что это даёт? Это сообщение отредактировал(а) Innuendo - 15.7.2006, 12:45 -------------------- =) |
|||
|
||||
| JSman |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 279 Регистрация: 10.7.2006 Репутация: нет Всего: 4 |
return false; они ставили точно для красоты.
смысла нет в них. return обеспечивает выход из функции и передачу значения из функции. прямо через события в DOM нельзя получать какие-либо значения. события здесь процедуры, а не функции. (т.е. функции без возврата значения). обычно скрипты пишут в прогах, обеспечивающих подсветку кода. return обычно выделяют. и программеру понятно, где выход из функции. ведь не всегда поймешь после сотни скобочек, где она заканчивается.
ничего
все события объектов - это свойства, доступные для записи и чтения. их тип - function вот пример: func() и func - это разные вещи в 1м случае - это возврат значения, а 2е - указатель на функцию (грубо говоря, имеет тип "функция"). |
||||
|
|||||
| Innuendo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 24.12.2005 Где: Молдова Репутация: 2 Всего: 6 |
а что ты мне посоветуешь по теме?
я уже неделю мучаюсь... 5-ый раз переделываю всё заново. каждый раз пытаюсь по инному. Ужа бошка трещит от этой галлереи. Я конечно могу использовать lightbox и все дела, но раз уже такое дело, то я хочу сам написать нормальную галлерею. Можешь подсказать алгоритм к примеру? с примерами кода? Я щас сделал так: при клике на превью, создаётся объект Image(). и на его .onload происходит дальнейшие действия- показ изображения. А пока не unload он крутит див с загрузкой, как тока onload пошел, он див с лоадингом убирает. В мозилле всё почти ОК, только если сразу после "Готово" на странице я кликну по превьюшке то он будет долго открывать страницу. В ие не хотел показывать фото который я уже открыл, но я это исправил (если кликаем по фоте которую уже открывали то он не создаёт новый объект а берет созданный уже) А вот в Опере торба вообще =( Крутится лоадинг вечно и все дела =( -------------------- =) |
|||
|
||||
| 12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
В Опере, значит, не работает onload? Тогда сделай в ней по упрощённой схеме.
|
|||
|
||||
| Innuendo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 24.12.2005 Где: Молдова Репутация: 2 Всего: 6 |
т.е. везде оставить с onload, а в Опере с image.complete и таймером... Можно, но остаётся 2 вопроса:
1) почему когда сразу после Done нажимаешь по превьюшке, картинка грузится гораздо дольше, чем нажав на неё после 2-3 секунд. Т.е. всё таки он ещё грузит? а Done уже прошел же 2) В этом шаблоне лайтбокс, всё вроде основано на image.onload, но там и в Опере работает, только там как-то не так с этим onload... разобрать не могу толком их алгоритм -------------------- =) |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |