/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
JS Rollover: preload virker ikke
Fra : Steen Eiler Jørgense~


Dato : 06-09-03 21:26

Nu har jeg studeret mere end et par håndfulde websider om
JavaScript-rollovers, og jeg fatter det stadig ikke...

Jeg har 1 (et) billede, som skal erstattes med op til syv forskellige, alt
afhængig af hvilket menupunkt, man laver onmouseover på.

Det fungerer fint - når man laver onmouseover bliver det blanke billede
erstattet af et andet, og når man onmouseouter, kommer det blanke billede
tilbage igen.

Problemet? At preloaden ikke virker! Hver gang man flytter musen, går
maskinen på nettet for at hente billedet! Hvorfor f..... tager den ikke de
preloadede billeder?

Så vidt jeg kan se, gør jeg det helt rigtigt. Hvorfor dælen virker det så
ikke?

Mvh Steen



*** KODE START

<script type="text/javascript">

function taend(nr) {
eval('document.grouppic.src = grouppic'+nr+'.src;');
}

function sluk(nr) {
document.grouppic.src=('pics/blank.gif');
}

function loadimg() {
grouppic = new Image();
grouppic1 = new Image();
grouppic2 = new Image();
grouppic3 = new Image();
grouppic4 = new Image();
grouppic5 = new Image();
grouppic6 = new Image();
grouppic7 = new Image();

grouppic1.src = 'pics/headers/group1.jpg';
grouppic2.src = 'pics/headers/group2.jpg';
grouppic3.src = 'pics/headers/group3.jpg';
grouppic4.src = 'pics/headers/group4.jpg';
grouppic5.src = 'pics/headers/group5.jpg';
grouppic6.src = 'pics/headers/group6.jpg';
grouppic7.src = 'pics/headers/group7.jpg';
}

</script>
</head>
<body onload="loadimg();">

<a class="menu" onmouseover="taend(1);" onmouseout="sluk(1);"
href="1.htm">Menupunkt 1</a>
<a class="menu" onmouseover="taend(2);" onmouseout="sluk(2);"
href="2.htm">Menupunkt 2</a>
<a class="menu" onmouseover="taend(3);" onmouseout="sluk(3);"
href="3.htm">Menupunkt 3</a>
<a class="menu" onmouseover="taend(4);" onmouseout="sluk(4);"
href="4.htm">Menupunkt 4</a>
<a class="menu" onmouseover="taend(5);" onmouseout="sluk(5);"
href="5.htm">Menupunkt 5</a>
<a class="menu" onmouseover="taend(6);" onmouseout="sluk(6);"
href="6.htm">Menupunkt 6</a>
<a class="menu" onmouseover="taend(7);" onmouseout="sluk(7);"
href="7.htm">Menupunkt 7</a>

<img border="0" alt="" src="pics/blank.gif" name="grouppic" width="173"
height="173" />

*** KODE SLUT



--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."



 
 
Martin Hintzmann And~ (08-09-2003)
Kommentar
Fra : Martin Hintzmann And~


Dato : 08-09-03 07:09

Steen Eiler Jørgensen wrote:
> Nu har jeg studeret mere end et par håndfulde websider om
> JavaScript-rollovers, og jeg fatter det stadig ikke...
>
> Jeg har 1 (et) billede, som skal erstattes med op til syv forskellige, alt
> afhængig af hvilket menupunkt, man laver onmouseover på.
>
> Det fungerer fint - når man laver onmouseover bliver det blanke billede
> erstattet af et andet, og når man onmouseouter, kommer det blanke billede
> tilbage igen.
>
> Problemet? At preloaden ikke virker! Hver gang man flytter musen, går
> maskinen på nettet for at hente billedet! Hvorfor f..... tager den ikke de
> preloadede billeder?
>
> Så vidt jeg kan se, gør jeg det helt rigtigt. Hvorfor dælen virker det så
> ikke?

[ snip en masse kode ]

Giv et link til et online eksempel, så kigger vi på det.

Hintzmann c",)


Steen Eiler Jørgense~ (08-09-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 08-09-03 10:15

Martin Hintzmann Andersen wrote:

> Giv et link til et online eksempel, så kigger vi på det.

http://rumfart.dk/

--
Steen Eiler Jørgensen
"No, I don't think I'll ever get over Macho Grande.
Those wounds run...pretty deep."


Lasse Reichstein Nie~ (08-09-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 08-09-03 10:48

Steen Eiler Jørgensen <oz1sej@REMOVETHISget2net.dk> writes:

> http://rumfart.dk/

Jeg kan ikke se problemet. Billederne ser ud til at være preloadet
korrekt, og skifter omgående. Enten er min forbindelse og maskine
for hurtig, eller også er det noget i din cache-opsætning.

(Testet i IE6, Mozilla FB 0.6 og Opera 7.2beta)

Jeg får en javascript fejlbesked hvis jeg sender musen hen
over menuen, inden siden er helt loadet (altså inden preloaderen
er startet og har initialisereret grouppicarray.


/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Steen Eiler Jørgense~ (08-09-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 08-09-03 10:55

Lasse Reichstein Nielsen wrote:

> Jeg kan ikke se problemet. Billederne ser ud til at være preloadet
> korrekt, og skifter omgående. Enten er min forbindelse og maskine
> for hurtig, eller også er det noget i din cache-opsætning.

Har du prøvet at afbryde din netforbindelse og køre musen over
menupunkterne? Hvis jeg gør det, får jeg bare blanke billeder.

> Jeg får en javascript fejlbesked hvis jeg sender musen hen
> over menuen, inden siden er helt loadet (altså inden preloaderen
> er startet og har initialisereret grouppicarray.

I know. Det skal jeg også lige have fundet ud af, hvad jeg gør ved...

--
Steen Eiler Jørgensen
"No, I don't think I'll ever get over Macho Grande.
Those wounds run...pretty deep."


Lasse Reichstein Nie~ (08-09-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 08-09-03 11:09

Steen Eiler Jørgensen <oz1sej@REMOVETHISget2net.dk> writes:

> Har du prøvet at afbryde din netforbindelse og køre musen over
> menupunkterne? Hvis jeg gør det, får jeg bare blanke billeder.

Jeg kan ikke lige afbryde min forbindelse, men hvis jeg vælger "Work
offline" i menuen, så virker billederne stadig.

Hmm, jo, jeg kunne lukke forbindelsen (mens der ikke var andre der
bruger den). De er helt klart cachede.

Har du en proxy eller andet der kan pille ved om billeder bliver
cachet?

> I know. Det skal jeg også lige have fundet ud af, hvad jeg gør ved...

Test om grouppicarray[nr] er initialiseret før du bruger den.

Lav evt. et array med URL'erne i, og brug det i stedet for
grouppicarray. Det er ikke nødvendigt at tag URL'en fra et Image
object, en streng er lige så god.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Steen Eiler Jørgense~ (08-09-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 08-09-03 12:14

Lasse Reichstein Nielsen wrote:

> Hmm, jo, jeg kunne lukke forbindelsen (mens der ikke var andre der
> bruger den). De er helt klart cachede.

Det var dælens. Såvel derhjemme (1 pc m. ZoneAlarm > router >
ADSL-modem) som her på arbejdet (pc > stort LAN) kan jeg *ikke* få
billederne frem, hvis jeg f.eks. hiver mit netkabel ud. Der bliver bare
ikke vist noget. Så snart jeg sætter kablet i igen, kommer billederne
også igen.

> Har du en proxy eller andet der kan pille ved om billeder bliver
> cachet?

Hvad de har på mit netværk her på arbejdet, ved jeg ikke, men SVJV har
jeg intet af den slags derhjemme...

Desuden: image preload skulle jo meget gerne virke, uanset hvad. Jeg
havde ikke indtryk af, at image preload var afhængig af, at brugeren
havde sat sit system op på en bestemt måde.

> Test om grouppicarray[nr] er initialiseret før du bruger den.

Wieso?

> Lav evt. et array med URL'erne i, og brug det i stedet for
> grouppicarray. Det er ikke nødvendigt at tag URL'en fra et Image
> object, en streng er lige så god.

Hm - hvis jeg ikke definerer det som et image object, bliver billederne
vel ikke cachet? IE cacher vel ikke et billede, bare fordi jeg tildeler
en strengvariabel f.eks. streng='pics/billede.jpg' ?

--
Steen Eiler Jørgensen
"No, I don't think I'll ever get over Macho Grande.
Those wounds run...pretty deep."


Lasse Reichstein Nie~ (08-09-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 08-09-03 17:10

Steen Eiler Jørgensen <oz1sej@REMOVETHISget2net.dk> writes:

> Det var dælens. Såvel derhjemme (1 pc m. ZoneAlarm > router >
> ADSL-modem) som her på arbejdet (pc > stort LAN) kan jeg *ikke* få
> billederne frem, hvis jeg f.eks. hiver mit netkabel ud.

Jeg har lige testet igen. Windows XP/Pro med IE6, alle patches.

> Desuden: image preload skulle jo meget gerne virke, uanset hvad. Jeg
> havde ikke indtryk af, at image preload var afhængig af, at brugeren
> havde sat sit system op på en bestemt måde.

Hvis de har en disk-cache på 2 bytes, så hjælper preloading ikke
meget. Hvis en proxy ændrer på billedets data, så det beder om ikke at
blive cachet, så følger browseren trop. Der er mange muligheder for at
spænde ben for sig selv :)

> Wieso?

if (grouppicarray[nr]) {
// brug det
}

> Hm - hvis jeg ikke definerer det som et image object, bliver billederne
> vel ikke cachet? IE cacher vel ikke et billede, bare fordi jeg tildeler
> en strengvariabel f.eks. streng='pics/billede.jpg' ?

Nej. Men når billedet er loadet og cachet, så behøver du ikke det
Image-objekt du loadede det med, mere.

Hvis du har URL'erne i et array for sig selv, og bruger det til at
skifte src'en på img-elementet, så virker det også inden du begynder
at preloade. Når du så preloader, så vil det bare hente de billeder der
mangler.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Steen Eiler Jørgense~ (09-09-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 09-09-03 09:25

Lasse Reichstein Nielsen wrote:

> Hvis de har en disk-cache på 2 bytes, så hjælper preloading ikke
> meget. Hvis en proxy ændrer på billedets data, så det beder om ikke at
> blive cachet, så følger browseren trop. Der er mange muligheder for at
> spænde ben for sig selv :)

Nu prøvede jeg noget nyt: slettede ALT, hvad der var i cachen, og læste
siden ind, UDEN at mouseover'e på noget. Herefter hev jeg netstikket ud.
Nu lå alle billederne fint preloadet i C:\winnt\profiles\...\Temporary
Internet Files\. Når jeg så kørte musen over billederne skete der ikke
en dyt. Først da jeg satte netstikket i igen, virkede det.

Så gik jeg ind i Funktioner > Internetindstillinger > Midlertidige
Internetfiler > Indstillinger... Her kan man vælge:

"Kontroller, om der er nye versioner af tidligere gemte sider:
- Ved hvert besøg på siden
- Her gang Internet Explorer startes
- Automatisk
- Aldrig"

Jeg havde markeret "Ved hvert besøg på siden", og den virker ikke. Men
alle de tre andre indstillinger virker! Hvis man vælger en vilkårlig af
de tre andre, fungerer preloaden! Men da formodentlig 95-98% af alle
internetbrugere har valgt "Ved hvert besøg på siden" (det rådes man jo
generelt til), vil det altså sige, at image preload generelt ikke
virker. Oder was?

> if (grouppicarray[nr]) {
> // brug det
> }

Tres bon - det funker! Tak!

> Nej. Men når billedet er loadet og cachet, så behøver du ikke det
> Image-objekt du loadede det med, mere.

Tror du det er et problem, at jeg gør, som jeg gør?

> Hvis du har URL'erne i et array for sig selv, og bruger det til at
> skifte src'en på img-elementet, så virker det også inden du begynder
> at preloade. Når du så preloader, så vil det bare hente de billeder
> der mangler.

Hm, altså sådan her: ?

var grouppicarray = new Array();

function loadimg() {
grouppic = new Image();
grouppic.src = 'pics/blank.gif';

grouppicarray[1] = 'pics/headers/group1.jpg';
grouppicarray[2] = 'pics/headers/group2.jpg';
grouppicarray[3] = 'pics/headers/group3.jpg';
grouppicarray[4] = 'pics/headers/group4.jpg';
grouppicarray[5] = 'pics/headers/group5.jpg';
grouppicarray[6] = 'pics/headers/group6.jpg';
grouppicarray[7] = 'pics/headers/group7.jpg';
grouppicarray[8] = 'pics/headers/group8.jpg';
}

--
Steen Eiler Jørgensen
"No, I don't think I'll ever get over Macho Grande.
Those wounds run...pretty deep."


Lasse Reichstein Nie~ (09-09-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 09-09-03 12:17

Steen Eiler Jørgensen <oz1sej@REMOVETHISget2net.dk> writes:

> Men da formodentlig 95-98% af alle internetbrugere har valgt "Ved
> hvert besøg på siden" (det rådes man jo generelt til), vil det altså
> sige, at image preload generelt ikke virker. Oder was?

Det skal jeg ikke gøre mig klog på. Jeg tror det sikreste er at tro at
folk ikke piller ved indstillingerne.
(Og jeg sætter procenten af brugere der bruger IE lidt lavere, uden
at der er nogen der faktisk ved noget som helst om det ... statistikkerne
kan være misvisende).

> Tror du det er et problem, at jeg gør, som jeg gør?

Nej. Det var bare en anden måde at omgå problemet med at man ikke
måtte mouseover'e før billederne var begyndt at blive preloadet.

> Hm, altså sådan her: ?
>
> var grouppicarray = new Array();
>
> function loadimg() {
> grouppic = new Image();
> grouppic.src = 'pics/blank.gif';
>
> grouppicarray[1] = 'pics/headers/group1.jpg';
> grouppicarray[2] = 'pics/headers/group2.jpg';
> grouppicarray[3] = 'pics/headers/group3.jpg';
> grouppicarray[4] = 'pics/headers/group4.jpg';
> grouppicarray[5] = 'pics/headers/group5.jpg';
> grouppicarray[6] = 'pics/headers/group6.jpg';
> grouppicarray[7] = 'pics/headers/group7.jpg';
> grouppicarray[8] = 'pics/headers/group8.jpg';

Det preloader ikke noget. Men det kan tilføjes ved:
for (var i=1;i<grouppicarray.length;i++) {
var dummy = new Image();
dummy.src = grouppicarray[i];
}

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Martin Hintzmann And~ (08-09-2003)
Kommentar
Fra : Martin Hintzmann And~


Dato : 08-09-03 11:34

Steen Eiler Jørgensen wrote:
> http://rumfart.dk/

Jeg syntes det ser ud til at virke fint.
Som Lasse skriver kan det være noget cache opsætning i din browser.


OT: Samme effekt kan også laves uden javascript i ren CSS.
http://www.meyerweb.com/eric/css/edge/popups/demo2.html

Hintzmann c",)



Steen Eiler Jørgense~ (08-09-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 08-09-03 12:15

Martin Hintzmann Andersen wrote:

> Jeg syntes det ser ud til at virke fint.
> Som Lasse skriver kan det være noget cache opsætning i din browser.

Ja - jeg synes stadig, det er mærkeligt.

> OT: Samme effekt kan også laves uden javascript i ren CSS.
> http://www.meyerweb.com/eric/css/edge/popups/demo2.html

Nå ja, selvfølgelig. Det kan være, jeg skulle overveje det

--
Steen Eiler Jørgensen
"No, I don't think I'll ever get over Macho Grande.
Those wounds run...pretty deep."


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste