Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   HTML-верстка (http://www.flasher.ru/forum/forumdisplay.php?f=27)
-   -   Прелоад баттонз (http://www.flasher.ru/forum/showthread.php?t=21061)

Дайвер 01.10.2001 07:53

Прелоад баттонз
 
Проблема вот какая вылезла.

Есть сайт. (ну надо же! ;) )
На сайте куча менюшных ролловеров. Стоит стандартная всеми любимая функция MM_preloadImages. При просмотре иллюстрации в отдельном окошке путем window.open, URL исходного файла меняется, как правило, с blabla.htm на blabla.htm#

Так вот, при этом превращении, все загруженные в память ролловеры начисто теряют связь с реальностью и при наведении на них мышью начинают подгружаться по-новой. Ситуация, я думаю, понятна и не очень приятна.

Что можно предпринять? Кто знает, того расцулую и подарю шарж на память. ;)

TEHb 01.10.2001 11:07

попробуй запихнуть свой прелоадер в js файл
и грузить этот файл на двух страничках

Дайвер 01.10.2001 11:12

: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, вид спереди (увеличить)">

TEHb 01.10.2001 11:19

урл странички есть?

дай глянуть

Дайвер 01.10.2001 12:02

Не, нету, но вот к примеру у DeepDiver'а на страничке www.deepwater.ru такое есть или у Lusiak на www.ogs.ru скрипты эти есть.

TEHb 01.10.2001 12:10

вообще терятся не должно
посмотри настройки кеша в броузере


я например считаю, что прилоад делать можно , но не нужно
www.greatorca.com (в тему про дайвинг)
:)

Дайвер 01.10.2001 12:52

а вопрос все еще висит

TEHb 01.10.2001 13:06

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");
}
}

попробуй так
то что синим евляется прилуадом
если я все правельно понимаю

Дайвер 01.10.2001 13:13

Да я не о том, что у меня прелоад не работает! Работает!

В изначальную страницу все грузится на ура, но при вызове open.window родительское окно меняет URL и ранее подгруженные картинки теряют связь с родительским окном.

Вот я про что. :(

TEHb 01.10.2001 13:16

ясно
ответ прост
смотри настройки кеша
если стоит обновлять при каждом заходе то все работает так как и должно

Дайвер 01.10.2001 13:20

Ни при чем тут кеш совсем. :rolleyes: Вернее браузер ни при чем.

kompadre 01.10.2001 13:29

Попробуй прописать полный адрес

<img src="www.diversank.com/images/my.gif">

kompadre 01.10.2001 13:33

А еще попробуй

Код:

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];}}
}


Дайвер 01.10.2001 13:45

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');
}

Дайвер 01.10.2001 14:05

Можно, конечно, сделать так:

<a href="" onclick="ShowImg('...

но тогда вместе с загрузкой начнет перегружаться и родительское окно. URL не изменится, но все равно это изврат.

Вот эти функции MM_swapImage() и MM_swapImgRestore() как работают?

Ну, хоть кто-нибудь!
Неужели ни у кого нет превьюшек на сайте и ролловерных кнопок??? Не верю. :rolleyes:

kompadre 01.10.2001 14:34

К функции MM_Preload попробуй приделать

if (!document.URL.indexOf("#")) {
// Делать
}

Дайвер 01.10.2001 14:54

: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];} }
}

А это тогда что такое??? Это ж в стандартной функции есть, я почему и удивляюсь, что не пашет.

kompadre 01.10.2001 15:01

offtopic

В этих функциях постоянно не хватает то открывающих то закрывающих фигурных скобок... Халтура!!! :)

Дайвер 01.10.2001 15:04

Чупуху говоришь, чесслово! :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];} }
}

kompadre 01.10.2001 15:15

А for-у не треба? Пусть сам себе циклиться :rolleyes:

Дайвер 01.10.2001 15:24

Так там же только один If стоит... аа... все равно не работает :p :p :p

Zebestov 01.10.2001 16:53

не вширь, а вглубь!
 
Какова природа появления вместо bla-bla-bla.html позиции bla-bla-bla.html#?

Если отсюда:
<a href="#" ... onclick="self.open(...)" ...>жми!!!</a>

то проблема исчезнет, когда ты допишешь в конец инструкции по onclick
...onclick="...; return false"...

таким образом ссылка в href вообще не отработает.

Может я не втему — помилосердствуйте :)

Дайвер 01.10.2001 17:31

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/

Повозюкай по меню, видишь подсветку?
Теперь нажми на парня в синем. Открылось окошко.
И меню не пашет. :(

Че делать?

kompadre 01.10.2001 18:07

Эксперемент :

Доунлоадишь с эксплорером твою пагу. Вазюкаеш по ней...

Доунлоадиш тем же "апаратом" www.spaininn.com/biz.html (please don't tell anybody that it's mine :)). Возюкаеш по зеленым стрелкам.

Стрелки возвращаються на круги своя а кнопки на твоей паге - нет.

IMHO у тебя не фурычит MM_Restore().

Arlekino 01.10.2001 18:21

Если проблема в решётке, то пиши вместо неё javascript:void(0);

<a href="javascript:void(0);" onclick="…"> …

Дайвер 01.10.2001 18:26

Спасибо, ребята, ушел копать по-новой сначала.

Дайвер 01.10.2001 23:47

Ох, парни, какие ж мы все умные (кроме шуток), сколько мыслей выдвинули...

kompadre, я переписал swap/restore чтобы картиночкм возвращались, но результат нулевой.

Zebestov, Arlekino, хорошие были советы... Спасибо всем! :)

А знаете, как я решил проблему. ТУПО поставил вызов той же функции, что и в <body onload=preloadImages()>

т.е. <a href="#" onclick="ShowImg(...);preloadImages() ">...</a>

;)

Дайвер 01.10.2001 23:55

Конечно остался кое-какой баг в виде шлейфа медленно перекрашивающихся кнопок, но, думаю, что это уже не так критично для визуального впечатления, чем когда кнопка (а то и несколько сразу) вообще пропадает в никуда.

Думаю, что тоже можно че-нить придумать.

sts 02.10.2001 00:00

вот наша жизнь...

Дайвер 02.10.2001 00:06

В каком именно месте? Ткни пальцем, плиз! :)

kompadre 02.10.2001 00:37

2 Дайвер

Zebestova и Arlikino советы хорошии... А мои так отстой :confused: :eek:

Ая-яй :(

:D :D :D

Дайвер 02.10.2001 01:10

2 kompadre

Как это остой? ТЫ ЧТО? Я такого не говорил! Я написал, что эффекта не было для стоявшей проблемы, а общий результат твоих советов прост: кода стало меньше на 2 кило! Мерси особое! :)

http://www.diverlab.com/img2/beer.gif

RFMitrio 02.10.2001 01:13

Слушай, Дайвер, а у меня все пашет на странице! Может это у меня глюк???
Правда отличие в том, что я ставил не
<a href="#" onClick=...>, а
<a href="javascript:OpenWindow.....">

kompadre 02.10.2001 01:15

2 Дайвер

Ну тады пиво на бочку (или бочку... на пиво)... или просто по пиву...

:) :) :)

Дайвер 02.10.2001 01:28

2 RFMitrio

А что у тебя пашет? У меня тоже все пашет, только не совсем корректно подгружаются "задние" картинки ролловеров.

2 kompadre

http://www.diverlab.com/img2/lips.gif http://www.diverlab.com/img2/alco.gif

evalex 02.10.2001 05:38

Пользоваться функциями Dreamweara???

Дайвер 02.10.2001 05:43

Сначала я воротил сам, но потом лисапед стал получаться какой-то корявый, и я решил его дальше не изобретать.

Но, кстати, у меня так и остался гибрид Макромедии и мой, т.к. стандартные функции не могут нормально сваповать и релоадить две картинки по одной ссылке.

У меня есть места в выпадающем меню, где по одной ссылке меняются два гифа.

Такой корявый решил и оставить. Пашет кое-как. :)

RFMitrio 02.10.2001 11:48

2Дайвер: Я загружаю картинки либо парами ( в самом начале <body> ) - сначала нижнюю, которую при ролловере видно, а потом саму. Для Нетскейпа я в начале <боди> загружаю только картинки, которые видны только при ролловере. А остальные без прелоуда ( в Нетскейпе другой какой-то принцип загрузки ). Так вот, я написал, так как выше, и при открытии нового окна - все нормально!
--
Ставить href="#" некорректно, поскольку при нажатии на кнопку страница возвращается к началу ( если есть вертикальный скроллинг ). Лучше так, как Арлекино посоветовал или как у меня.


Часовой пояс GMT +4, время: 13:13.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.