| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > предварительная загрузка |
| Автор: 6o6pbI 26.9.2007, 22:00 |
| Здравствуйте. Нужна такая вещь,когда человек заходит на сайт должна появляться страничка ...подождите идет загрузка... а когда нужная страница полностью загрузилась,то осуществляется переход на нее. пример можно посмотреть на woweb и вообще много таких сайтов. Научите пожалуйста!! Заранее спасибо!!! |
| Автор: Aoli 26.9.2007, 22:40 |
| Внутри html кода пишется джава скрипт, на событие onload. Примеры посмотри в коде страниц этих же сайтов. |
| Автор: 6o6pbI 26.9.2007, 23:04 |
| в том то и дело что они прячут javascript в отдельном файле!!! :( |
| Автор: nornad 27.9.2007, 00:32 |
| 6o6pbI, а самому написать не судьба? Или ты хочешь чтобы тебе просто код дали готовый? Добавлено через 3 минуты и 12 секунд Да и отдельный файлик скрипта посмотреть тоже за нефиг делать - сохрани страницу полностью или открой свойства страницы и глянь на скрипты. |
| Автор: 6o6pbI 27.9.2007, 09:10 |
| Я бы с радостью написал сам,но я новичек в этом нелегком деле!!! Нет,я не прошу готовый скрипт,я прошу объяснить мне как это работает.А ответ типа пользуйся функцией onLoad(); и все будет ок,для меня не нисут никакой информации в силу моего малого знания о javascript. Про наличие этой функции я знаю,а как ей пользоваться нет,вот и прошу помощи. |
| Автор: dsCode 27.9.2007, 10:47 |
| Aoli, а разве onLoad наступает не тогда, когда страница полностью загружена уже (включая картинки)? ;) 6o6pbI, примерно, суть в следующем: 1. страница разбивается на равные части (исходя из контента; контент скрыт в div'e) (допустим 10 частей) 2. после каждой части вставляется вызов функции js, которая "продвигает" индикатор загрузки (который находится в отдельном, абсолютно-спозиционированном div'e) на 10%. 3. После последней части функция скрывает div загрузки и показывает основной div с контентом. |
| Автор: InfMag 27.9.2007, 11:00 | ||
Вот тебе пример
|
| Автор: 6o6pbI 27.9.2007, 12:22 | ||||
| Вот оно!!! Спасибо за хорошие ответы!! Но я уже разобрался почти. реализовал я так...
каждой картинке написал onload="lo();"; и все работает(почти!!!!) Вот она проблемма!!! В опере не работает!!!!Почему??????? Не исчезает див загрузки!!!!к стати та же проблемма и с этим простым кодом
Подскажите кто знает пожалуйста. |
| Автор: dsCode 27.9.2007, 12:33 |
| InfMag, еще раз повторю - onload для body наступит, когда документ загрузится полностью 6o6pbI, все должно сработать. document.getElementById('log_bar').style.display='none'; - у Вас определен элемент с id log_bar (это скрипт с woweb - у них-то, может и определен этот элемент, а Вы не забыли написать?)? Потмоу что функция vis_log() должна вызваться после отработки последней lo(...) - tim=setTimeout("vis_log();",0). |
| Автор: 6o6pbI 27.9.2007, 12:48 |
| 6o6pbI, все должно сработать. document.getElementById('log_bar').style.display='none'; - у Вас определен элемент с id log_bar (это скрипт с woweb - у них-то, может и определен этот элемент, а Вы не забыли написать?)? Потмоу что функция vis_log() должна вызваться после отработки последней lo(...) - tim=setTimeout("vis_log();",0). Все правильно сделал.В других браузерах работает ведь!!!!А в опере нет. У меня 12 картинок у каждой onload="lo();" шаг=8 функция lo(); повторяется 12 раз,при этом var_log становится > 100 и запускается function vis_log(); Проблемма в том что в опере даже первый шаг не делается. Вот ссылка где пытаюсь реализовать http://www.tm-1-05.jino-net.ru/ |
| Автор: dsCode 27.9.2007, 16:02 |
| 6o6pbI, не знаю, сходу так не сказать. Что написано в описании к скрипту? Он поддерживает Оперу вообще? На самом деле, когда происходит document.write(...) в самом конце создается невидимый див, но вот закрывающего тега для него нет. Может из-за этого - хотя вряд ли, конечно. В общем, надо пошагово отлаживать и искать причину. P.S.: вообще, пощелкайте по своим же ссылкам (форум, вход и т.д.) - переодически файрбаг говорит "lo() is not defined, tim is not defined.. и т.д.". Так что там ошибки есть - надо искать и фиксить. |
| Автор: SelenIT 27.9.2007, 16:12 | ||
6o6pbI, просто не все браузеры делают из id-ов глобальные переменные. Если пользоваться стандартным методом document.getElementById, будет работать везде:
|
| Автор: 6o6pbI 27.9.2007, 16:33 |
| dsCode не поверишь!!!Реально из за незакрытого дива нничего не работало!!!!!!!!! У меня там все через getElementById. Спасибо всем кто потратил на меня время!!! |
| Автор: Astraller 29.9.2007, 16:08 | ||
Ужос.... решение елементарное и лежит на поверхности.
|
| Автор: SelenIT 30.9.2007, 16:27 |
| Astraller, и чем это элементарнее, чем пример InfMagа выше? К тому, же, не поздновато ли только создавать див-прелоудер в момент onload-а - т.е. тогда, когда по логике должна открыться основная страница? |
| Автор: AKS 30.9.2007, 17:14 |
Своя рубашка ближе к телу. |
| Автор: dsCode 30.9.2007, 20:54 |
| Astraller, AKS, да это не индикатор загрузки получится, а просто эффект "Загрузка данных..." "моргнет" и исчезнет, когда страница уже будет загружена полностью. onLoad наступит, когда ВСЕ загрузится (попробуйте картинку в метров 5 запихнуть в код и поставить alert(...) в onLoad - этот алерт появится, когда картинка загружена будет уже). |
| Автор: 6o6pbI 30.9.2007, 22:37 |
| |
| Автор: AKS 1.10.2007, 08:50 |
А я тут при чем? )))))))))))))))))))))))))))))))) Я тут, грубо говоря, только offtop'ил (да и то один только раз)... |
| Автор: dsCode 1.10.2007, 11:18 |
| AKS, а-а )) пардон, просто мне показалось, что ты поддержал идею с onLoad'ом, говоря о "рубашке" =)) |
| Автор: cruelangel 1.10.2007, 11:52 |
| > пример можно посмотреть на woweb и вообще много таких быдло-сайтов. думаешь посетителю интересно смотреть на твоё "пожалуйста, подождите"? |
| Автор: Astraller 1.10.2007, 12:53 | ||
А вы проверяли? window.onload наступит сразу же при появлении окна а document.body станет доступно когда догрузится! |
| Автор: SelenIT 1.10.2007, 13:08 |
Astraller, это в каком браузере и в каком режиме? Можно полный пример? |
| Автор: Astraller 1.10.2007, 13:21 | ||
Всё . Беру свои слова в зад 1) window.onload срабатывает после загрузки <head> только в FF 2.0.0.6+ 2) Некуда крепить созданный нами слой т.к. document.body еще не догрузился. PS Тогда вижу только одно решение. Поверх всех слоёв выводим этот слой загрузки в самом начале а после догрузки его скрываем. ИМХО |
| Автор: InfMag 12.12.2007, 13:09 | ||
Ну вобще можно очень и очень хитрожопо поступить
Тогда стопудов пока до последней строчки не дойдет нифига не покажется |
| Автор: dsCode 12.12.2007, 15:39 |
| InfMag, ага, можно и так (что то же самое, в принципе). Минус такой реализации, что нельзя сымитировать именно индикатор с процентами =) |