Avatar billede xbobby Nybegynder
27. august 2004 - 13:30 Der er 25 kommentarer og
1 løsning

Prelod script der kan klare en xhtml validering hos W3C

Hej med jer

Jeg har brug for et preload script, hvor man har en klar fornemmelse af at der er noget der skal hentes ind på siden først. F.eks noget der viser hvor langt den er noget fra 0 til 100%

Dem er der en masse af på nettet :-)

Men hvad jeg ikke har kunnet findet er en som opfylder xhtml valideringen på http://validator.w3.org/

Der er 60 point til den der at give mig et sådant script, der ikke giver nogen fejlkoder på ovennævnte adresse.

Glæder mig til at høre fra jer.
Avatar billede roenving Novice
27. august 2004 - 13:35 #1
Avatar billede xbobby Nybegynder
27. august 2004 - 14:00 #2
Hej Roenving
Du er tæt på - 4 fejlmeddelser - fra de 60 point :-)

Jeg har lagt koden efter at jeg har optimeret den til xhtml på denne adresse:

http://www.webskabeloner.dk/xgallery/1_billeder/01_gallery/preloderXhtml.htm

Du kan se resultatet af testen på nedennævnte link:

http://validator.w3.org/check?uri=http%3A%2F%2Fwww.webskabeloner.dk%2Fxgallery%2F1_billeder%2F01_gallery%2FpreloderXhtml.htm

Jeg kan ikke løse det fejlmeddelser - kan du?

//xbobby :-)
Avatar billede roenving Novice
27. august 2004 - 14:11 #3
Brug cdata-entitien til at omkranse dit java script:

<script type="text/javascript">
<![CDATA[
... unescaped script content ...
]]>
</script>

(http://www.w3.org/TR/2002/REC-xhtml1-20020801/#h-4.8)

onload-fejlen klarer du ved at sætte den via javascript, sæt denne efter </body>

<script type="text/javascript">
<![CDATA[
document.getElementById('pimg').onload=preload;
]]>
</script>
Avatar billede roenving Novice
27. august 2004 - 14:12 #4
Linket er til punkt 4.8 i indholdsfortegnelsen:

4.8. Script and Style elements
Avatar billede xbobby Nybegynder
27. august 2004 - 15:25 #5
Hej Roenving
Du er tæt på nu :-), dit første forslag fungerer perfekt, det andet forslag giver stadig problemer (2 stk). Prøv og klik på validerings linket til W3C - jeg har prøvet at sætte det lille javascript inden for body, det giver en fejlmeddelse mindre.

Hvad er det der er galt nu?
Avatar billede roenving Novice
28. august 2004 - 13:24 #6
Fjern onload="preload();" fra img-tagget !-)
Avatar billede xbobby Nybegynder
28. august 2004 - 13:56 #7
Jeg har nu fjernet preload fra img tagget, og det giver en fejlmeddelse mindre, hvis jeg flytter javascriptet i bunden inden for body er der nul fejlmeddelser på xhtml fronten, MEN så virker det ikke når jeg klikker på, og det gør det heller ikke vis det lille javascript ligger udn for body.

http://www.webskabeloner.dk/xgallery/1_billeder/01_gallery/preloderXhtml.htm

Så nu manger der "bare" at få de lille javascript til at virke inden for body ?

Du gør det godt roenving! Du er sgu lige godt tæt på nu :-)
Avatar billede roenving Novice
28. august 2004 - 14:07 #8
Dvs. at det ikke virker, hvis du placerer script-stumpen indenfor <body></body> ?-)

-- æv, så skal vi lave en kompliceret konstruktion:

I det script, som du ellers har:

window.onload = function(){document.getElementById('pimg').onload=preload;};
Avatar billede xbobby Nybegynder
28. august 2004 - 15:09 #9
Der er lige meget om jeg placere den inde for eller uden for body - preloderen virker ikke, hverken med den forrige version eller med din sidste lange seje kode.

Det der var fordelen ved at have javascriptet inden for body er at valideringen af xhtml bliver fejlfri, så scriptet skal ligge inden for body.

Jeg har vedlagt koden, så du kan prøve at teste de på din egen server, for så er det nok bedre at se hvad der mangler, og har andre kommentater, så bare kom med dem :-)

------------------------------------------------------------------------

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Avanceret preloader</title>

<script type="text/javascript">
<![CDATA[

bill = new Array("billede02.jpg", "billede03.jpg", "billede04.jpg", "billede05.jpg", "billede06.jpg", "billede07.jpg", "billede08.jpg", "billede09.jpg", "billede10.jpg"); //Billederne. Listen kan sagtens forstørres/formindskes.

i = -1;
nsImg = new Image();
tbts = 0;

function preload() {
  img = (document.all) ? document.images["pimg"] : nsImg;
  if (++i != 0 && document.all)
    tbts += Math.round(img.fileSize / 1024);
  prct = Math.round(i / bill.length * 100);
  document.getElementById("pl").innerHTML = prct + "%<br />" + ((document.all) ? "Kilobytes: " + tbts + "<br />" : "") + i + " ud af " + bill.length + " billeder loadet";
  document.getElementById("plbar").style.width = prct + "%";
  if (i >= bill.length)
    efterPreload();
  else {
    img.src = bill[i];
    if (!document.all)
      tjek();
  }
}

function tjek() {
  if (nsImg.complete)
    preload();
  else
    setTimeout(tjek, 100);
}

function efterPreload() {
  //Her defineres, hvad der skal ske, efter billederne er loadet
  //Hvis siden skal skifte, fjerner du bare de to slashes herunder:
self.location.href = "test.htm";
}
]]>
</script>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h2>Avanceret preloader</h2>
<div style="width: 200px; height: 16px; border: 1px solid black; background-color: #CCCCCC; font-size: 0px;">
<div style="width: 0%; height: 100%; background-color: #6699CC; font-size: 0px;" id="plbar"></div>
</div>
<span id="pl" style="font-family: Verdana; font-size: 60%;"></span><br />
<img src="" name="pimg" id="pimg" alt="" style="display: none;" />
</body>
<script type="text/javascript">
<![CDATA[
window.onload = function(){document.getElementById('pimg').onload=preload;};
]]>
</script>

</html>
Avatar billede roenving Novice
28. august 2004 - 15:10 #10
Okay, du forstod ikke at du skulle flytte det helt væk fra den afsluttende:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Avanceret preloader</title>

<script type="text/javascript">
<![CDATA[

bill = new Array("billede02.jpg", "billede03.jpg", "billede04.jpg", "billede05.jpg", "billede06.jpg", "billede07.jpg", "billede08.jpg", "billede09.jpg", "billede10.jpg"); //Billederne. Listen kan sagtens forstørres/formindskes.

i = -1;
nsImg = new Image();
tbts = 0;

function preload() {
  img = (document.all) ? document.images["pimg"] : nsImg;
  if (++i != 0 && document.all)
    tbts += Math.round(img.fileSize / 1024);
  prct = Math.round(i / bill.length * 100);
  document.getElementById("pl").innerHTML = prct + "%<br />" + ((document.all) ? "Kilobytes: " + tbts + "<br />" : "") + i + " ud af " + bill.length + " billeder loadet";
  document.getElementById("plbar").style.width = prct + "%";
  if (i >= bill.length)
    efterPreload();
  else {
    img.src = bill[i];
    if (!document.all)
      tjek();
  }
}

function tjek() {
  if (nsImg.complete)
    preload();
  else
    setTimeout(tjek, 100);
}

function efterPreload() {
  //Her defineres, hvad der skal ske, efter billederne er loadet
  //Hvis siden skal skifte, fjerner du bare de to slashes herunder:
self.location.href = "test.htm";
}
window.onload = function(){document.getElementById('pimg').onload=preload;};
]]>
</script>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h2>Avanceret preloader</h2>
<div style="width: 200px; height: 16px; border: 1px solid black; background-color: #CCCCCC; font-size: 0px;">
<div style="width: 0%; height: 100%; background-color: #6699CC; font-size: 0px;" id="plbar"></div>
</div>
<span id="pl" style="font-family: Verdana; font-size: 60%;"></span><br />
<img src="" name="pimg" id="pimg" alt="" style="display: none;" />
</body>
</html>
Avatar billede xbobby Nybegynder
28. august 2004 - 15:16 #11
Nej det have jeg ikke luret. Jeg har kopiret hele din kode ind og xhtml valideringen er i orden, men preloadningen kommer ikke i gang :-(

Gider du prøve det på din egen server?

mvh.. xbobby
Avatar billede xbobby Nybegynder
30. august 2004 - 11:37 #12
Øh roenving har du glemt mig - eller kan du ikke få rebussen til at gå op?
Avatar billede roenving Novice
31. august 2004 - 14:11 #13
Måske bare:

window.onload = preload;
]]>
</script>

?-)
Avatar billede xbobby Nybegynder
31. august 2004 - 15:17 #14
Nej - Desværre samme resultat .-(¨

Gider du prøve koden på din egen server,
så har du muligheden for hurtigt, at afprøve de kombinationer der falder dig ind?
Avatar billede roenving Novice
31. august 2004 - 15:33 #15
Den virker ikke i IE, mens Mozilla kører den uden problemer, hvis man udkommenterer cdata-tingene ?-)

-- og det kan jeg ikke forklare ...

-- og cdata-tingen bliver overflødig, hvis du lægger scriptet i en ekstern fil, så det var nok en ide ...
Avatar billede xbobby Nybegynder
31. august 2004 - 20:50 #16
Hej roenving
Gider du smide koden på for den sidste løsning eller lægge link med:

"cdata-tingen bliver overflødig, hvis du lægger scriptet i en ekstern fil"

Jeg har forsøgt at lægge javascriptet for oven i en ekstern fil og det fungerer. Men får problemer med det nederste.

Men der har også været en del løsninger, så smid koden på så jeg kan se hvad du endte op med, og smid samtidigt et svar, for jeg tror vi er ved vejs ende - tak for hjælpen og din tålmodighed :-) Hilsen fra en glad xbobby
Avatar billede roenving Novice
01. september 2004 - 03:13 #17
Det som skal stå i den eksterne fil, jeg har prøvet med, er:

bill = new Array("billede02.jpg", "billede03.jpg", "billede04.jpg", "billede05.jpg", "billede06.jpg", "billede07.jpg", "billede08.jpg", "billede09.jpg", "billede10.jpg"); //Billederne. Listen kan sagtens forstørres/formindskes.

i = -1;
nsImg = new Image();
tbts = 0;

function preload() {
  img = (document.all) ? document.images["pimg"] : nsImg;
  if (++i != 0 && document.all)
    tbts += Math.round(img.fileSize / 1024);
  prct = Math.round(i / bill.length * 100);
  document.getElementById("pl").innerHTML = prct + "%<br />" + ((document.all) ? "Kilobytes: " + tbts + "<br />" : "") + i + " ud af " + bill.length + " billeder loadet";
  document.getElementById("plbar").style.width = prct + "%";
  if (i >= bill.length)
    efterPreload();
  else {
    img.src = bill[i];
    if (!document.all)
      tjek();
  }
}

function tjek() {
  if (nsImg.complete)
    preload();
  else
    setTimeout(tjek, 100);
}

function efterPreload() {
  //Her defineres, hvad der skal ske, efter billederne er loadet
  //Hvis siden skal skifte, fjerner du bare de to slashes herunder:
self.location.href = "test.htm";
}
window.onload = preload;
Avatar billede xbobby Nybegynder
01. september 2004 - 11:21 #18
Jeg har prøvet din ny opskrift, men der sker ikke noget, hvad er det jeg gør galt?

http://www.webskabeloner.dk/xgallery/1_billeder/01_gallery/preloder_test01.htm
Avatar billede roenving Novice
01. september 2004 - 14:30 #19
Jeg har ikke kunnet teste den rigtigt, da jeg ikke gad at skaffe mig et stort antal billeder, som opfyldte rimelige betingelser, men har du prøvet med rigtige billeder, for dem, du nu bruger er jo ikke-eksisterende !-)
Avatar billede xbobby Nybegynder
01. september 2004 - 15:02 #20
Jeg forstår ikke hvad du mener med at - "dem jeg bruger nu ikke er eksisterende" - for det er de da, og ja jeg har prøvet med rigtige billeder, det har jeg gjort ved hver eneste test vi har lavet sammen.

Der ligger 10 billeder i mappen 01_gallery, som starter med billede01.jpg og så fremdeles til billede10.jpg, så den side af sagen er i orden.

Men lad os stoppe her - smid et svar til mig så du kan få dine velfortjente point :-)
Avatar billede roenving Novice
01. september 2004 - 15:10 #21
Jeg for en fejlmelding om at jeg ikke har adgang til mappen, hvis jeg prøver at hente et billede direkte, og det er stadig sådan, at Mozilla fint kører, mens IE ikke gør, det kunne have noget med det at gøre ...

-- er du sikker på at du har givet tilstrækkeligt med rettigheder på den (sikkert nye !-) mappe ?-)
Avatar billede xbobby Nybegynder
01. september 2004 - 15:56 #22
Her er et link til det oprindelige script du henviste mig til:

http://www.webskabeloner.dk/xgallery/1_billeder/01_gallery/preloder.html

Det køre fint og uden problemer, så problemet ligger altså fra det øjeblik at vi begynder at omdanne det til xhtml.

Hvis du ønsker det kan jeg sende dig en ZIP fil med de 10 billeder til din private email adresse, hvis det vil gøre det nemmer for dig.

Men som før nævnt kan vi også stoppe her, for som jeg har sagt før jeg syntes at du har gjort det rigtigt godt - op til dig :-)
Avatar billede xbobby Nybegynder
03. september 2004 - 10:58 #23
HEJ ROENVING
SMID ET SVAR JEG ER GODT TILFREDS
TAK FOR HJÆLPEN :-)

XBOBBY
Avatar billede roenving Novice
07. september 2004 - 04:52 #24
Oki '-)
Avatar billede xbobby Nybegynder
07. september 2004 - 10:20 #25
Sov godt - din natteravn :-)
Avatar billede roenving Novice
07. september 2004 - 11:43 #26
-- og tak for point ;~}
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