19. august 2003 - 19:17Der er
29 kommentarer og 1 løsning
skift af image ved onMouseOver
Jeg ønsker at kunne preloade nogle billeder til en liste hvor når musen holdes over et TR element i en tabel, så skifter backgroundimage på rækken til et nyt og på onMouseOut skal det skifte tilbage igen!
Jeg HAR i forvejen lavet kode som skifter billederne ud OG som virker, MEN efter installation af Internet Explorer 6.0 så bliver alle billederne sorte når musen føres hen over!! Det er som om at det selvsamme billede genloades hele tiden. Jeg tolker det som en fejl i IE6, da det aldrig har været et problem i andre udgaver af IE.
Men så tænkte jeg at lave en preload af de 2 billeder jeg skifter imellem for at se om det kan løse problemet!
Jeg har nu følgende kode, men kan dog ikke få det til at skifte billede! Kan nogle hjælpe?
----kode start -----
<HTML>
<HEAD> <META NAME="Generator" CONTENT="Stone's WebWriter 3.5"> <script language="JavaScript"> var cache = new Array(); cache[0] = ""; cache[1] = "";
function loadToCache(img) { cache[cache.length-1] = new Image(); cache[cache.length-1].src = img; }
function loadImages() { loadToCache("billede1.gif"); loadToCache("billede2.gif"); // osv. } </script> </HEAD>
Jeg har haft fat i en del tilfælde på det sidste, hvor netop preloader-funktionen ikke har givet det ønskede resultat, når jeg selv testede lokalt, hvor indstillingen er, at der skal hentes hver eneste gang ...
Mærkværdigvis fungerer det ganske udmærket, hvis man navigerer videre og så bruger tilbage-knappen -- og så begynder det at blive ret underligt -- og indtil nu uden en forklaring !-)
Jeg kan dog oplyse at jeg HAR browseren sat til ALTID at hente nyt indhold og det er meget vigtigt at netop dette program viser nyt indhold hver gang! Pt. har jeg også testet det lokalt, jeg prøver lige at uploade + prøve tilbage-knap!
grunken: Det ser MEGET bedre ud! I hvertfald i min lokale test, der virker det! ;o) MEN hvad er det så egentligt der gør at det nu er preloadet??, for umiddelbart så ser det jo ud som om at jeg er tilbage hvor jeg startede med at sætte URL OG .src direkte nede i onMouseOver & onMouseOut. ?
elm = document.getElementsByTagName('tr') for (i=0;i<elm.length;i++){ if (elm[i].name.indexOf("hest")!=-1){ elm[i].onmouseover = new Function("this.style.backgroundImage='url(./billede1.jpg)';") elm[i].onmouseout= new Function("this.style.backgroundImage='url(./billede2.jpg)';") } } }
JA, jeg véd hvad det er hensigten er med en "preloader", men jeg spurgte om hvad det så egentligt er i koden som gør at billederne NU skulle være preloadet i stedet for først at blive loadede når musen holdes hen over?
Jeg har nu implementeret dit eksempel i den rigtige kode og det så ved første øjekast meget fint ud! ;o) Men så oplevede jeg alligevel at nogle gange når jeg kører musen hurtigt hen over billederne, så bliver de først sorte, for så derefter at blive vist med rigtigt billede. Det var netop dette jeg ville undgå ved at gå over til preloadede billeder..
cache[0] = new Image(); cache[0].src = "gfx/pic1.gif";
de liner sørger for at billedet bliver preloadede ;D, dette giver så en masse yderlige muligheder så man kan checke for billeders eksistens, bredde o.s.v. ;D
<script language="JavaScript" type="text/javascript"> function hvalros(img) {
var cache = new Array(); cache[0] = new Image(); cache[0].src = "billede1.gif"; cache[1] = new Image(); cache[1].src = "billede2.gif";
elm = document.getElementsByTagName('tr') for (i=0;i<elm.length;i++){ if (elm[i].name.indexOf("hest")!=-1){ elm[i].onmouseover = new Function("this.style.backgroundImage='url(./billede1.gif)';") elm[i].onmouseout= new Function("this.style.backgroundImage='url(./billede2.gif)';") } } } </script>
er vist sådan den skal se ud så!
og en anden grund til at billedet lige står og bliver sort i et kort sekund er at billedet måske er lidt tungt? ;)
nå, men uanset hvad, så virker koden jo nu. I hvertfald vil jeg lige lade det køre med den nye kode et stykke tid for at se om det virker "bedre" end min gamle kode uden "preloader". Tak for hjælpen, Grunken får points.. ;o)
PS: Jeg har dog ikke prøvet de sidste eksempler I er kommet med. Er heller ikke helt klar over hvad elm'en & hvalrossen skulle hjælpe til med, meeen øllerne kan vel altid hjælpe på et eller andet.. ;o)
NÅ, det ser altså desværre ud til at det IKKE har den store betydning! ;o( <TR>-elementerne bliver stadigvæk sorte indimellem når musen køres hen over, OGSÅ selv om man har været hen over elementerne tidligere og grafikken således BURDE være indlæst og ikke forsvinde igen. Det virker som om det er en fejl som er indført i IE6.0 og som man desværre ikke kan løse!?
Grunken, jeg kan desværre ikke lægge link til koden op, da det endnu ikke er i drift eller offentliggjort, men måske du har en personlig e-mail adr?
Hvilken metode kan man i øvrigt kode sig til for at se om billedet ER loadet ind i memory?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.