Forum Webscript.Ru
Программирование => JavaScript & JScript => Тема начата: mussa от 16 Января 2006, 19:27:26
-
из прошлого века проблема - меню с меняющимися кнопками при наведении мышки - картинки разумеется подгружаются прелоадом. Однако, обнаружил, что когда по модему на сайт заходишь, то менюха почему-то тормозит при наведении мышки - то есть кнопки меняют вид с опозданием, в чем может быть дело?
то есть все, работает... только с опозданием... (все кнопки перечислены в теге body, я проверял) весят кнопки по килобайту каждая...
может дело в том, что нужно полностью дождаться загрузки страницы, прежде чем мышкой шевелить?
ведь то что они подгружаются, не значит что они грузятся в первую очередь! но в этом нет своей очевидности...
похоже, единственный выход - это скрипт, который вообще запретил бы грузиться всей остальной странице, прежде чем загрузились кнопки и подкнопки?
-
как вариант, в тэге (разместить его в ) пути к картинкам прописать как константы
-
не очень понял, как это сделать?
вот у меня перечень путей в теге body выглядит так:
допустим, я перенесу это дело в скрипт в head ...
а что поменять в самих путях?
-
mussa
поставь вместо меню Loading... а на Body OnLoad показ меню...
-
commander
Ты думаешь, он понимает, как это делается?
mussa
Забей в инлайн-скрипт, как Greg сказал
...
...
...
Однако обрати внимание, чтобы твоя вставка (MM_preloadImages) шла уже после кода JS, вставленного DreamWeaver-ом.
-
CGVictor -
так какая разница?!
ну, будет объявлена команда этим картинкам грузиться уже начиная с head -
это же вовсе не значит, что они неприменно загрузятся все раньше всей остальной страницы!
ведь этот эффект запаздывания (который только вначале появляется, пока мышкой не проведешь по всем кнопкам и не дождеешься их шевеления) очевидно связан как раз с тем что страница еще не загрузалась (а может только на 99% только...
тут решение - это только блокировка загрузки страницы пока стопудов не загрузятся все перечисленные кнопки
commander -
все-тиаки не могли бы уточнить, об чем речь, сдается мне вы о чем-то другом толковали, нежели CGVictor ?
-
mussa
Если картинки действительно мелкие - то всё будет работать нормально.
Если не хочешь - делай как говорит commander: показывай вместо нужного меню слой с "loading", а уже по загрузке заменяй его на нужное содержимое.
-
а, только счас понял, что коммандер предлагал делать слой...
но слой мне не годится - дизайн сайта не приемлет - при разном разрешении в разных местах меню окажется (короче, сайт-гармошка)
-
можно впрочем их невидимым образом отдельно в невидимом слое загрузить
-
mussa
Как это связано с "резиновым" дизайном? Никто ж не заставляет position:absolute ставить.
Сделай слой, id="holder", напиши в нем "Loading", размести на месте меню. Где-то - еще один слой, id="realmenu". Выводишь меню скриптом с сервера в realmenu, а body onLoad = "document.getElementById(\'holder\').innerHTML=document.getElementById(\'realmenu\').innerHTML";
Варианты might differ, а общая идея именно такая.