Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Lightbox моя версия (https://javascript.ru/forum/project/2082-lightbox-moya-versiya.html)

HelpeR 01.11.2008 19:39

аа спасибо сек будте исправлено, и я использую ваш скрипт для нахождения классов для старых браузеров

Octane 01.11.2008 19:56

Да не важно чей скрипт, главное чтоб Вы понимали, что он делает, ну или хотябы хотели понять :-)

HelpeR 01.11.2008 20:24

http://fuzaylov.net/asdf.html (кликать по ссылкам после полной загрузки страницы) Еще возник какой то глюк
1) почему то рис не грузиться в IE7, а в FF2 and Opera они грузятся но не вставляются в див, а браузер перекидывает меня на адрес рисунка.
2) почему то рисунки loading.gif и x.jpg не подгружаются.
хотя в методе setup src указывается.
this.xPic                     = new Image();
this.xPic.src                = 'x.jpg';
this.loadingPic             = new Image();
this.loadingPic.src        = 'loading.gif';

Octane 01.11.2008 20:38

Нужно предотвратить стандартное событие перехода по ссылке
объект_событие.preventDefault(); // для W3C совместимых браузеров
event.returnValue = false; // для Internet Explorer

Просто «return false» в функции где-то не срабатывает, не помню уже где, вроде с addEventListener.

А изображения, чтобы они были подгружены заранее, должны находится в дереве, а не просто созданы через new Image().src… чтобы они не мешались, можно, например, задать для них абсолютные координаты и visibility: hidden; в CSS, но не display: none;.

Octane 01.11.2008 20:51

Кстати, JavaScript очень «гибкий» язык и вместо:
this.xPic                     = new Image();
this.xPic.src                = 'x.jpg';
this.loadingPic             = new Image();
this.loadingPic.src        = 'loading.gif';

можно записать так:
(this.xPic = new Image()).src = 'x.jpg';
(this.loadingPic = new Image()).src = 'loading.gif';

хоть пусть меня кто-нибудь и упрекнет в не читаемости такой конструкции, но я предпочитаю использовать подобные возможности языка для сокращения кода :-)

HelpeR 20.12.2008 17:20

Здравствуйте всем!
Доделал скрипт до конца. Пожалуйста если найдутся еще замечания всегда буду только рад.
Еще есть вопрос. Мой скрипт начинает работать после полной загрузки страницы. Т.е. страница грузиться и цикл проходит по всем ссылкам и прикручивает к ним обработчики. Как вы думаете, будет лучше прикручивать обработчики после полной загрузки страницы или вставить тэг <script src="my.js"></script> в самый низ страницы и проходиться по всем ссылкам не дожидаясь полной загрузки страницы. Т.е. в первом случае скрипт не работает до полной загрузки страницы, а во втором случает он может применяться еще к не загрузившимся рисункам!

HelpeR 20.12.2008 17:20

http://fuzaylov.net/effect/

Octane 20.12.2008 18:51

Есть еще вариант обработать ссылки по событию «DOMContentLoaded» и в то же время оставить возможность вызвать скрипт в ручную в любое время.

Смотрел в Firefox 3.0.5
1. Первое изображение не открывается (индикатор загрузки вечно висит), второе показывает первое :-)
2. Загрузку нельзя прервать.
3. На большом мониторе плавное изменение прозрачности черного блока тормозит.
4. Черный блок не достает справа и снизу на границ рабочей области браузера.

HelpeR 20.12.2008 19:19

Цитата:

Загрузку нельзя прервать.
Т.е. во время загрузки рисунка прикрутить кнопку "закрыть" или есть еще какой нибудь выход?
Цитата:

На большом мониторе плавное изменение прозрачности черного блока тормозит.
У меня 17' и все нормально, а от чего может зависеть это торможение на большом маниторе?

Octane 20.12.2008 19:40

Цитата:

Сообщение от HelpeR (Сообщение 9778)
еще какой нибудь выход?

Закрывать по клику на черный блок
Цитата:

Сообщение от HelpeR (Сообщение 9778)
У меня 17' и все нормально, а от чего может зависеть это торможение на большом маниторе?

Браузер не успевает плавно перерисовывать такие большие прозрачные области, по экрану начинают бегать широкие горизонтальные полосы разной прозрачности. На маленьком мониторе так же, только эффект не настолько заметен. Это не проблема компьютера. Уже много раз с таким сталкивался. Может быть стоит попробовать подобрать более оптимальные значения вместо того, чтобы прибавлять по 0.02 до 0.9 с задержкой 100мс, в это время браузер успевает перерисовать весь экран аж 45 раз.

Я в подобном скрипте, чтобы избавится от этого мерцания, растягивал темный блок до размеров окна, а не страницы, делал его position: fixed; и изменял прозрачность не так плавно.


Часовой пояс GMT +3, время: 08:22.