Avatar billede dreamcode Nybegynder
24. januar 2004 - 13:02 Der er 4 kommentarer

Image Caching

Jeg har et javascript object som generer en liste bestående af et ikon, en overskrift og et link. mit problem er at disse lister i meget stor udstrækning bruger de samme ikoner, og jeg vil derfor gerne cache dem. Jeg har prøvet nedenstående. Det cacher godt nok som tænkt, men det er kun den sidste forekomst af et cachet billede som dukker op i listen (dvs hvis der er 10 ens ikoner er det kun sidste post i listen som har et ikon)

Kan det være noget med referencer til objektet, skal objektet måske kopieres før det appendes til list html'en ?

    var d = this.objFrame.document;
    var oT = d.createElement("table");
    oT.width = "100%";
    oT.id = "id_" + this.objName;
    oT.cellPadding = 0;
    oT.cellSpacing = 0;
    var oB = d.createElement("tbody");
    oB.className = "listBody";
    var e = this.arrElements;
    for (var i=0;i<e.length;i++){
        var oR = d.createElement("tr");
        oR.name = this.objName + "row" + i;
        oR.frame = this.objFrame;
        oR.blnLeft = this.blnLeftColor;
        oR.link = e[i][2];
        var oC1 = d.createElement("td");
        oC1.id = this.objName + "row" + i + "a";
        oC1.className = (this.blnLeftColor)? "listIcon" : "listIconPlain";
        if (!arrImageCache[e[i][1]]){
            // No image cached, do it now!
            var oI = d.createElement("img");
            oI.src = "/icon/" + e[i][1];
            arrImageCache[e[i][1]] = oI;
        }
        oC1.appendChild(arrImageCache[e[i][1]]);
        oR.appendChild(oC1);
        oB.appendChild(oR);   
    }
    oT.appendChild(oB);
    return oT;
Avatar billede dreamcode Nybegynder
24. januar 2004 - 13:26 #1
Det ser ud som om at det ikke kan lade sig gøre at genbruge den samme node 2 steder i et dokument.... weird ...

Måske kan man kopiere noden istedet for at benytte en reference til den...
Avatar billede roenving Novice
24. januar 2004 - 14:00 #2
Selvfølgelig kan du ikke bruge den samme node to steder, da det jo er et objekt og ikke bare en samling egenskaber ...

-- men du kan sagtens klone en node:

newNode = oldNode.cloneNode(true);

true kontrollerer om children medtages i kloningen !-)
Avatar billede dreamcode Nybegynder
24. januar 2004 - 14:05 #3
men det hjælper mig vel pricipielt ikke med cachingen da den nye node også vil prøve at loade src filen til det image???
Avatar billede roenving Novice
24. januar 2004 - 15:30 #4
Hvilket IE (vist 5+) som standard alligevel gør medmindre du sætter den til slet ikke at kigge efter nye udgaver ...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester