14. september 2005 - 10:04Der er
12 kommentarer og 1 løsning
Hvilken effekt har et JavaScript i bunden af en HTML-side?
Jeg er i tvivl om dette spørgsmål hører hjemme under "Internet Exploder", "JavaScript" eller et helt tredje sted, så nu ender det her:
Hvilken effekt har et JavaScript der ligger i bunden af en HTML-side, hvis scriptet er længe om at eksekvere (eller ikke kan eksekveres?
Altså rent konceptuelt:
<HTML> <HEAD> <TITLE>Sidenavn</TITLE> </HEAD>
<BODY> Her er så indholdet af siden, med billeder og alt muligt. .. .. .. ..
<SCRIPT> I bunden af siden ligger så JavaScriptet </SCRIPT>
</BODY>
Hvad sker der hvis JavaScriptet (hvis vi i øvrigt antager at det er korrekt, og ikke giver fejl i browseren) er længe om at eksekvere eller ikke kan eksekveres:
- Hvis det fx. er 5 minutter om at eksekvere
- Hvis det forsøger at kalde en server/hente noget fra en server, som ikke svarer?
- Aldrig bliver færdig med at eksekvere (looper)
Bliver siden så vist? Eller bliver den først vist når JavaScriptet er eksekveret?
Eller i tilfælde af at JavaScriptet kalder en anden server: Bliver siden først vist, når JavaScriptet har fået kontakt med den anden server?
-- hvis det er noget script, som afvikles direkte i browseren, så vil et loop, som bare fortsætter og fortsætter til sidst få browseren til at brokke sig, og spørge brugeren om det kan være rigtigt !-)
-- hvis det, som jeg har på fornemmelsen, er et (counter-)script, som sammensætter en url til et billede eller andet, og så udskriver det i browseren med document.write eller lignende, vil browseren blive frigivet i det øjeblik, det er skrevet til browseren, og så er det browseren, der i baggrunden forsøger at få udfyldt hullet, mens den fortsætter med at rendere resten af siden ...
-- af samme grund kan det anbefales, at lidt tungere konstruktioner først afvikles onload, så brugeren i hvert fald har noget at se på !o]
Ja, JavaScript kalder en anden server fra klienten. Det kunne fx. være noget statistik (ikke en counter): Anden server kaldes så denne anden server kan logge kaldet i en database.
Men spørgsmålet er om siden vil blive vist, hvis scriptet ikke kan få fat i serveren (eller serveren er lang tid om at svare). Og det er specielt IE der ser ud som om den ikke vil vise siden. Hvis man trykker på 'stopknappen' i browseren bliver siden vist med det samme, så selve siden er loadet ned.
Håber var at jeg kunne undgå denne problemstilling ved at ligge scriptet til sidst i koden, men det kan jeg åbenbart ikke (i IE), derfor dette mere principielle spørgsmål.
"Men spørgsmålet er om siden vil blive vist, hvis scriptet ikke kan få fat i serveren (eller serveren er lang tid om at svare). Og det er specielt IE der ser ud som om den ikke vil vise siden. Hvis man trykker på 'stopknappen' i browseren bliver siden vist med det samme, så selve siden er loadet ned."
burde selvfølgelig også indeholde:
"Eller hvis scriptet looper eller køre længe/langsomt........."
Altså: Kan et langsomt eller på anden måder 'hæmmet' JavaScript der ligger til sidst på en HTML-side betyde, at siden ikke bliver vist (specielt i IE).
Så længe scriptet kører (og altså har kontrollen !-), vil siden ikke blive vist ...
-- men jeg ville ikke selv finde på at smide et sådant script direkte ind, jeg ville så heller ikke finde på at lade javascript udføre kontakt ud i verden, for det kan laves meget mere elegant, f.eks. på den måde countere gør !o]
-- men hvis det er nødvendigt, så kunne du jo bare smide koden i en iframe (evt. uden størrelse !-)
Det er svært at svare på, når man ikke ved, hvad det er, du laver - men du må kunne teste på, hvad der sker, når du afvikler scriptet og så handle på det. Det er altid en skidt idé at basere sin kode på noget, der kan betyde langtidsophold i svedekassen for browseren :)
Jeg har desværre ingen mulighed for at ændre scriptet, men blev forsikret om, at hvis det blev lagt som det sidste før </BODY> så ville det ikke kunne påvirke visningen af siderne.
Men det er altså ikke korrekt?
Og nej, jeg kan ikke vise jer scriptet (og det er også ligemeget - spørgsmålet er af generel karakter).
Hvis et script, der er hvorsomhelst på siden, udføres umiddelbart uden at afgive kontrollen, vil siden ikke vises før det er færdigt (se også 14/09-2005 13:19:01 !-)
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.