Avatar billede elprebsi Praktikant
12. juni 2001 - 16:12 Der er 7 kommentarer og
1 løsning

Vente på load af image

Jeg har nedenstående HTML, men ved ikke, hvordan jeg kan få browseren til at vente med at skrive resten af siden, til billedet er loadet.

<HTML>
<BODY>
<IMG SRC=\"http://localhost:8080/servlet/MinGraf\" id=\"graf\">
<SCRIPT LANGUAGE=\"JavaScript1.2\">
while(document.images[\"graf\"].complete==false)
{
  // Hvad skriver jeg her ?===
}
</SCRIPT>
Nu er den loadet ....
</BODY>
</HTML>
Avatar billede jakoba Nybegynder
12. juni 2001 - 22:16 #1
<HTML>
<BODY>
<IMG SRC=\"http://localhost:8080/servlet/MinGraf\" id=\"graf\">
<SCRIPT LANGUAGE=\"JavaScript1.2\">
while(document.images[\"graf\"].complete==false)
{
  var tekst = \"det er ligemeget, blot en ubrugelig javascript sætning\"
            +\" det kan spilde tiden mens løkken venter\";
}
</SCRIPT>
Nu er den loadet ....
</BODY>

mvh JakobA
</HTML>
Avatar billede elprebsi Praktikant
13. juni 2001 - 08:41 #2
JakobA>>Det ser ´desværre ikke ud til at fungere på min PC. Loopet æder simpelthen 100% CPU, og jeg får dermed aldrig loadet siden færdig i browseren.

Det ser ud til at jeg har brug for noget, der ikke æder 100% CPU, men som alligevel får JavaScriptet til at vente et øjeblik.
Avatar billede jakoba Nybegynder
13. juni 2001 - 11:18 #3
Så er jeg ikke sikker på det er muligt.
Jeg gik ud fra som givet at load kørte med meget høj prioritet og ville tvinge sig selv igennem.
hvis vi laver en delay der lader andre processer komme til, vil en af de processer nok være browseren der tegner videre på siden :(

du kan evt prøve:
<SCRIPT LANGUAGE=\"JavaScript1.2\">
function venteFunktion() {
    if (document.images[\"graf\"].complete==false) setTimeout(\"venteFunktion()\",1);
};
venteFunktion(); //start funktionen.
</SCRIPT>

Men ellers kommer vi nok til at håbe på Jumper eller Olebole kommer forbi.

mvh JakobA
Avatar billede jakoba Nybegynder
13. juni 2001 - 11:28 #4
Næe hov, lidt kan vi. ved at kombinere:

function venteFunktion() {
    for (var i=0; i<10000; i++ ) gylle = \"spild tid med busy wait\";
    if (document.images[\"graf\"].complete==false) setTimeout(\"venteFunktion()\",1);
};

så får browseren ikke ret mange lejligheder til at tegne videre, måske så få at det bliver som ønsket :)
Avatar billede elprebsi Praktikant
13. juni 2001 - 12:38 #5
Well,
Jeg har allerede forsøgt diverse for-løkker, men så kommer Bill G. og siger til mig:
\"Et script på denne side medfører, at Internet Explorer kører langsomt. Hvis scriptet fortsætter, vil computeren måske ikke reagere på input.\"
Så den går desværre heller ikke.
Avatar billede olebole Juniormester
13. juni 2001 - 15:08 #6
<ole>
At sætte en timeout vil vist altid være en risky biz  :o)
Mon ikke du kan lave et hidden <div> med sidens indhold - bortset fra billedet. Så burde du vist kunne lægge en onload-handler på billed-tag\'et, der fyrer en \'visLag()\'-agtig funktion af.
/mvh
</bole>
Avatar billede spacey Nybegynder
13. juni 2001 - 17:19 #7
Eller du kunne lave en side der preloader billedet, og når den er færdig hopper du så videre til den rigtige side...
Avatar billede elprebsi Praktikant
13. juli 2001 - 08:09 #8
Tak for hjælpen. Jeg nåede ikke helt i mål med den løsning, men jeg værdsætter alligevel den tid og entusiame I har brugt på spørgsmålet.

/elprebsi
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