/ 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
Er det billede cache, eller...?
Fra : John Kjoller


Dato : 06-06-05 18:08

Når dette står i et eksternt javascript-ark:

infoknapoff = new Image();
infoknapoff.src = "grafik/inforknapoff.gif";

infoknapon = new Image();
infoknapon.src = "grafik/inforknapon.gif";

- Hvad sker der så?
Jeg har en hel masse af den slags i mit script-ark - fordi jeg troede at det
cachede mine billeder. - Og det var jo smart... troede jeg....

Jeg troede egentlig, at det var en nødvendighed for at min mouseover-effekt
fungerede, men da min nysgerrighed bød mig det, og jeg fjernede det fra
script-arket, gjorde det overhovedet ingen forskel.

Billedeskift funktionen ligger også i mit script-ark:

function skiftbillede(img_id,img_src) {
document.getElementById([img_id]).src=img_src; }

Og jeg kalder den således:

<a href="javascript: enfunktion()"
onmouseover="skiftbillede('knap','grafik/inforknapon.gif')"
onmouseout="skiftbillede('knap','grafik/inforknapoff.gif')">
<img border="0" src="grafik/inforknapoff.gif" id="knap" alt="L&aelig;s
mere" /></a>

Hvad har jeg misforstået mht mouseover effekten? (det virker for så vidt....
men tilsyneladende er cache funktionen ikke nødvendig?)

KH
John



 
 
Lasse Reichstein Nie~ (06-06-2005)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 06-06-05 20:37

"John Kjoller" <john@skrivikkedette-basix.dk> writes:

> Når dette står i et eksternt javascript-ark:
>
> infoknapoff = new Image();
> infoknapoff.src = "grafik/inforknapoff.gif";
....
> - Hvad sker der så?

Ikke noget før du inkluderer det i en side :)

> Jeg har en hel masse af den slags i mit script-ark - fordi jeg troede at det
> cachede mine billeder. - Og det var jo smart... troede jeg....

Såmænd. Din browser cacher (næsten) altid de billder du henter. Det
vigtige her er at de blever hentet *før* de skal bruges (pre-fetches),
så man ikke ser et tomt område mens billedet hentes første gang.

> Jeg troede egentlig, at det var en nødvendighed for at min mouseover-effekt
> fungerede, men da min nysgerrighed bød mig det, og jeg fjernede det fra
> script-arket, gjorde det overhovedet ingen forskel.

Der er to muligheder:
1 - du kører siderne direkte fra din egen harddisk. Så kan den hente
billedet lige så hurtigt derfra som fra cachen, og du kan ikke se om
det er prefetched eller ej, eller
2 - du kører siderne fra dit normale web-sted, og har forlængst cachet
alle billederne. Her kan du prøve at tømme din cache først, og så gå
ind på siden igen og se om du ikke kan se noget på den første mouse-over.


> Billedeskift funktionen ligger også i mit script-ark:
>
> function skiftbillede(img_id,img_src) {
> document.getElementById([img_id]).src=img_src; }
^ ^ - de to, [ og ], skal ikke være der.
Dette virker sjovt nok, fordi du laver et array med værdien af "img_id"
som eneste element, og derefter konverterer det til en streng igen.
Spild af energi, dog :)

> Hvad har jeg misforstået mht mouseover effekten? (det virker for så vidt....
> men tilsyneladende er cache funktionen ikke nødvendig?)

Nej, prefetching har kun et formål: at undgå et lidt grimt blink
*første* gang et billede skal bruges. Derefter gør det ingen forskel.

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

John Kjoller (06-06-2005)
Kommentar
Fra : John Kjoller


Dato : 06-06-05 21:48

"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev
> 2 - du kører siderne fra dit normale web-sted, og har forlængst cachet
> alle billederne. Her kan du prøve at tømme din cache først, og så gå
> ind på siden igen og se om du ikke kan se noget på den første mouse-over.
>

Jeg har testet fra mit websted. Og jeg har prøvet at tømme cachen først.
Synes stadig ikke jeg ser forskellen.
Måske gør det en forskel for folk med en langsommere forbindelse....

>> function skiftbillede(img_id,img_src) {
>> document.getElementById([img_id]).src=img_src; }
> ^ ^ - de to, [ og ], skal ikke være der.
> Dette virker sjovt nok, fordi du laver et array med værdien af "img_id"
> som eneste element, og derefter konverterer det til en streng igen.
> Spild af energi, dog :)
>

Jeg har på fornemmelsen at du her skriver noget som jeg rigtig gerne vil
vide (og forstå) - men jeg er desværre ikke med.

Som jeg forstår ovenstående, så henter jeg værdien af img_id (altså
id-navnet på den grafikfil jeg gerne vil udskifte) og værdien af img_src
(altså filnavnet som skal erstatte den fil jeg vil udskifte) - ved hjælp af
skiftbillede(img_id,img_src) - værdierne sættes når jeg kalder funktionen.

og så, ved hjælp af: document.getElementById([img_id]) - finder jeg den
grafikfil som har id-navnet [img_id]
- og vedhjælp af: .src=img_src; skifter jeg til det nye billede (img_src).

Er det korrekt forstået?

Hvad er det du siger at der ikke behøver at være der?

Kh
John



Jens Gyldenkærne Cla~ (06-06-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-06-05 22:31

John Kjoller skrev:

> og så, ved hjælp af: document.getElementById([img_id]) -

Funktionen kaldes normalt alene med normale parenteser:

document.getElementById('main');

- eller

var img_id = 'pic1';
document.getElementById(img_id);

De kantede paranteser - [ og ] - anvendes til arrays (fx
document.forms[0].elements["mail"]).


> finder jeg den grafikfil som har id-navnet [img_id]

Nej - din variabel hedder img_id - ikke [img_id]. Den måde du
bruger funktionen på er (så vidt jeg kan se) fin nok, men img_id er
ikke et array, og der er ingen grund til at putte firkantparenteser
omkring udtrykket.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

John Kjoller (06-06-2005)
Kommentar
Fra : John Kjoller


Dato : 06-06-05 23:04

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
> Nej - din variabel hedder img_id - ikke [img_id]. Den måde du
> bruger funktionen på er (så vidt jeg kan se) fin nok, men img_id er
> ikke et array, og der er ingen grund til at putte firkantparenteser
> omkring udtrykket.
>

Aha... Tak!

Så det var det der var overflødigt. Så ved jeg det.

KH
John



Erik Ginnerskov (06-06-2005)
Kommentar
Fra : Erik Ginnerskov


Dato : 06-06-05 23:14

Lasse Reichstein Nielsen wrote:

> Der er to muligheder:
> 1 - du kører siderne direkte fra din egen harddisk. Så kan den hente
> billedet lige så hurtigt derfra som fra cachen, og du kan ikke se om
> det er prefetched eller ej, eller
> 2 - du kører siderne fra dit normale web-sted, og har forlængst cachet
> alle billederne. Her kan du prøve at tømme din cache først, og så gå
> ind på siden igen og se om du ikke kan se noget på den første
> mouse-over.

Jeg kan se en tredje mulighed: Hans forbindelse er rimeligt hurtig og
billederne så små, at det næsten er umåleligt, om det hentes fra cache eller
fra nettet.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



Søg
Reklame
Statistik
Spørgsmål : 177482
Tips : 31964
Nyheder : 719565
Indlæg : 6408388
Brugere : 218883

Månedens bedste
Årets bedste
Sidste års bedste