Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS] Image preload hapert in IE

Pagina: 1
Acties:

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Ik ben begonnen aan een basic html editor in JavaScript, en nu loop ik tegen een hele nare bug aan. De gebruiker kan naar een plaatje linken, waarna dit wordt gescand zodat automagisch de width en height properties worden ingevuld. In firefox werkt het prima, maar in IE werkt het maar één keer. Dat wil zeggen, ik kan één plaatje inserten maar een tweede plaatje wordt niet geladen. Na wat debug werk weet ik zeker dat het probleem ligt in het niet plaatsvinden van een onload event voor het plaatje.

edit: het werkt soms ook de eerste keer al niet. Ik snap er echt niets meer van.

Testpagina, druk op Link Image rechtsbovenaan.

Relevant stukje script:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
        var http = prompt("Image location (URL):");
        if (http){
          var desc = prompt("Description:");
          if (!desc || desc=="undefined") desc = "Image";
          var preloadimg = new Image();
          preloadimg.src = http;
          preloadimg.desc = desc;
          preloadimg.onload = imgLoaded;
          preloadimg.onerror = imgError;
          preloadimg.onabort = imgError;
        }
(...)
    function imgLoaded() {
      if (this.width && this.height) {
        lefttag = "";
        righttag = "<img src=\""+this.src+"\" alt=\""+this.desc+"\" width=\""+this.width+"\" height=\""+this.height+"\" />";
        writetags(lefttag,righttag);
        }   else {
            lefttag = "";
        righttag = "<img src=\""+this.http+"\" alt=\""+this.desc+"\" />";
        writetags(lefttag,righttag);
      }
    }
    
    function imgError() {
      alert("No image was found on the specified location!");
      writetags("","");
    }


De oplettende lezer ziet dat ik inspiratie op heb gedaan uit het Check Images script van GoT O-)

[ Voor 3% gewijzigd door Bozozo op 16-11-2007 17:55 ]

TabCinema : NiftySplit


  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Om het een beetje overzichtelijk te houden, hier een dubbelpost. Mijn nederige excuses.

Ik heb het probleem inmiddels gevonden: als een image al in de cache van IE staat dan wordt er geen onload event getriggerd. Ik heb nog geen oplossing kunnen vinden though :|

edit: goed, het was dus kinderlijk eenvoudig. Als het bestand al in de cache staat, dan zijn width en height ook al bekend en hoef je niet eens een onload event af te wachten. Stiekem best logisch :+

[ Voor 27% gewijzigd door Bozozo op 16-11-2007 19:41 ]

TabCinema : NiftySplit


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:44

crisp

Devver

Pixelated

Als je het checkimages script wat beter bestudeerd had dan had je kunnen zien dat ik daar de .src property pas toeken nadat ik de eventhandlers heb toegekent. Verder doe ik in dat script sowieso een check of width en height misschien al bekent zijn ongacht of de onload getriggered is of niet ;)

Intentionally left blank