![]() |
Прелоад баттонз
Проблема вот какая вылезла.
Есть сайт. (ну надо же! ;) ) На сайте куча менюшных ролловеров. Стоит стандартная всеми любимая функция MM_preloadImages. При просмотре иллюстрации в отдельном окошке путем window.open, URL исходного файла меняется, как правило, с blabla.htm на blabla.htm# Так вот, при этом превращении, все загруженные в память ролловеры начисто теряют связь с реальностью и при наведении на них мышью начинают подгружаться по-новой. Ситуация, я думаю, понятна и не очень приятна. Что можно предпринять? Кто знает, того расцулую и подарю шарж на память. ;) |
попробуй запихнуть свой прелоадер в js файл
и грузить этот файл на двух страничках |
:eek:
Он и так в файле. А на каких ДВУХ страницах? Там же "битая" ссылка стоит. <a href="#" onclick="ShowImg('viking_pro1000_front_view.htm', '', 'width=400, height=500, scrollbars=yes, resizable=yes, menubar=no')"><img src="img/viking_pro1000_front_shema_sm.gif" class="illustration" width=100 height=100 hspace=5 vspace=10 border=1 alt="Модель Pro 1000, вид спереди (увеличить)"> |
урл странички есть?
дай глянуть |
Не, нету, но вот к примеру у DeepDiver'а на страничке www.deepwater.ru такое есть или у Lusiak на www.ogs.ru скрипты эти есть.
|
вообще терятся не должно
посмотри настройки кеша в броузере я например считаю, что прилоад делать можно , но не нужно www.greatorca.com (в тему про дайвинг) :) |
а вопрос все еще висит
|
img1 = new Image;
img1.src = "images/news.gif"; img12 = new Image; img12.src = "images/_news.gif"; function mouseover (obj, src) { if (doAnimate == "ok") { eval ("document.images['"+obj+"'].src="+src+".src"); } } попробуй так то что синим евляется прилуадом если я все правельно понимаю |
Да я не о том, что у меня прелоад не работает! Работает!
В изначальную страницу все грузится на ура, но при вызове open.window родительское окно меняет URL и ранее подгруженные картинки теряют связь с родительским окном. Вот я про что. :( |
ясно
ответ прост смотри настройки кеша если стоит обновлять при каждом заходе то все работает так как и должно |
Ни при чем тут кеш совсем. :rolleyes: Вернее браузер ни при чем.
|
Попробуй прописать полный адрес
<img src="www.diversank.com/images/my.gif"> |
А еще попробуй
Код:
function MM_preloadImages() { //v3.0 ;) |
2 kompadre
1 твой способ не подходит. Я знал, что не подойдет, но все же попытал счастья. А про второй способ, ты просто пропустил, я в самом первом посте сказал, что пользуюсь это функцией. У меня вот так: function MM_preloadImages () { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } function preloadButtons () { MM_preloadImages('img/topmnu1_1.gif', 'img/topmnu2_1.gif', 'img/topmnu3_1.gif', 'img/topmnu4_1.gif', 'img/topmnu5_1.gif', 'img/topmnu6_1.gif', 'img/topmnu7_1.gif'); } |
Можно, конечно, сделать так:
<a href="" onclick="ShowImg('... но тогда вместе с загрузкой начнет перегружаться и родительское окно. URL не изменится, но все равно это изврат. Вот эти функции MM_swapImage() и MM_swapImgRestore() как работают? Ну, хоть кто-нибудь! Неужели ни у кого нет превьюшек на сайте и ролловерных кнопок??? Не верю. :rolleyes: |
К функции MM_Preload попробуй приделать
if (!document.URL.indexOf("#")) { // Делать } |
:eek: :eek: :eek:
Не понял :rolleyes: function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];} } } А это тогда что такое??? Это ж в стандартной функции есть, я почему и удивляюсь, что не пашет. |
offtopic
В этих функциях постоянно не хватает то открывающих то закрывающих фигурных скобок... Халтура!!! :) |
Чупуху говоришь, чесслово! :rolleyes:
function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];} } } |
А for-у не треба? Пусть сам себе циклиться :rolleyes:
|
Так там же только один If стоит... аа... все равно не работает :p :p :p
|
не вширь, а вглубь!
Какова природа появления вместо bla-bla-bla.html позиции bla-bla-bla.html#?
Если отсюда: <a href="#" ... onclick="self.open(...)" ...>жми!!!</a> то проблема исчезнет, когда ты допишешь в конец инструкции по onclick ...onclick="...; return false"... таким образом ссылка в href вообще не отработает. Может я не втему — помилосердствуйте :) |
Zebestov!!! ПАМАГИ!!! http://www.diverlab.com/img2/pray.gif
<a href="#" onclick="ShowImg('equip/dive/suits/viking_xtreme_view.htm','','width=400, height=500, scrollbars=yes, resizable=yes, menubar=no'); return false"><img src="equip/dive/suits/img/viking_xtreme_sm.jpg" class="illustration" width=100 height=295 hspace=10 vspace=10 border=1 align="left" alt="Сухой гидрокомбинезон 'Viking X-treme' (увеличить)"></a> Да, ссылка не отрабытавает, но меню все равно не фурычит. Вот, попробуй сам. http://www.tetis.ru/pro/ Повозюкай по меню, видишь подсветку? Теперь нажми на парня в синем. Открылось окошко. И меню не пашет. :( Че делать? |
Эксперемент :
Доунлоадишь с эксплорером твою пагу. Вазюкаеш по ней... Доунлоадиш тем же "апаратом" www.spaininn.com/biz.html (please don't tell anybody that it's mine :)). Возюкаеш по зеленым стрелкам. Стрелки возвращаються на круги своя а кнопки на твоей паге - нет. IMHO у тебя не фурычит MM_Restore(). |
Если проблема в решётке, то пиши вместо неё javascript:void(0);
<a href="javascript:void(0);" onclick="…"> … |
Спасибо, ребята, ушел копать по-новой сначала.
|
Ох, парни, какие ж мы все умные (кроме шуток), сколько мыслей выдвинули...
kompadre, я переписал swap/restore чтобы картиночкм возвращались, но результат нулевой. Zebestov, Arlekino, хорошие были советы... Спасибо всем! :) А знаете, как я решил проблему. ТУПО поставил вызов той же функции, что и в <body onload=preloadImages()> т.е. <a href="#" onclick="ShowImg(...);preloadImages() ">...</a> ;) |
Конечно остался кое-какой баг в виде шлейфа медленно перекрашивающихся кнопок, но, думаю, что это уже не так критично для визуального впечатления, чем когда кнопка (а то и несколько сразу) вообще пропадает в никуда.
Думаю, что тоже можно че-нить придумать. |
вот наша жизнь...
|
В каком именно месте? Ткни пальцем, плиз! :)
|
2 Дайвер
Zebestova и Arlikino советы хорошии... А мои так отстой :confused: :eek: Ая-яй :( :D :D :D |
2 kompadre
Как это остой? ТЫ ЧТО? Я такого не говорил! Я написал, что эффекта не было для стоявшей проблемы, а общий результат твоих советов прост: кода стало меньше на 2 кило! Мерси особое! :) http://www.diverlab.com/img2/beer.gif |
Слушай, Дайвер, а у меня все пашет на странице! Может это у меня глюк???
Правда отличие в том, что я ставил не <a href="#" onClick=...>, а <a href="javascript:OpenWindow....."> |
2 Дайвер
Ну тады пиво на бочку (или бочку... на пиво)... или просто по пиву... :) :) :) |
2 RFMitrio
А что у тебя пашет? У меня тоже все пашет, только не совсем корректно подгружаются "задние" картинки ролловеров. 2 kompadre http://www.diverlab.com/img2/lips.gif http://www.diverlab.com/img2/alco.gif |
Пользоваться функциями Dreamweara???
|
Сначала я воротил сам, но потом лисапед стал получаться какой-то корявый, и я решил его дальше не изобретать.
Но, кстати, у меня так и остался гибрид Макромедии и мой, т.к. стандартные функции не могут нормально сваповать и релоадить две картинки по одной ссылке. У меня есть места в выпадающем меню, где по одной ссылке меняются два гифа. Такой корявый решил и оставить. Пашет кое-как. :) |
2Дайвер: Я загружаю картинки либо парами ( в самом начале <body> ) - сначала нижнюю, которую при ролловере видно, а потом саму. Для Нетскейпа я в начале <боди> загружаю только картинки, которые видны только при ролловере. А остальные без прелоуда ( в Нетскейпе другой какой-то принцип загрузки ). Так вот, я написал, так как выше, и при открытии нового окна - все нормально!
-- Ставить href="#" некорректно, поскольку при нажатии на кнопку страница возвращается к началу ( если есть вертикальный скроллинг ). Лучше так, как Арлекино посоветовал или как у меня. |
| Часовой пояс GMT +4, время: 13:13. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.