/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Genindlæse billede uden at "blinke"
Fra : Brian Sprogø


Dato : 21-12-04 09:12

Hejsa,

Nu er jeg ikke lige en ørn ud i javascript - men så er det jo godt at
man ved hvor man kan spørge...

Jeg har en .html-side med et billede på. Selve billedet bliver løbende
ændret (kommer fra et kamera).
Derfor vil jeg gerne ha' siden/billedet genopfrisket med f.eks. 5
sekunders melllemrum.

I første omgang løste jeg det ved at bruge:

<META HTTP-EQUIV="Refresh" CONTENT="5;URL=blabla.html">

Det virker sådan set også fint - bortset fra at billedet "blinker"
tydeligt ved opdatering af siden. Det er der vel måske heller ikke så
meget at sige til

Så forsøgte jeg mig med noget javascript, så hele siden kom til at se
således ud:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>V&aelig;gt Afdeling</title>
<script type="text/javascript">
function update(){
document.kamera.src = "ftp://192.168.16.20/fjernvejning/hassel.jpg";
}
window.onload = function(){setInterval('update()',5000)}
</script>
</head>
<body>
<img name="kamera" alt="afdeling" src=""
style="width: 100%; height: 100%;">
</body>
</html>

Det virker såmen også fint, men kun en enkelt gang. Funktionen bliver
altså ikke gentaget igen og igen som var planen.

Er der nogen der kan hjælpe mig lidt videre... ? Det burde vel være en
forholdsvis simpelt opgave

.... eller er der måske en hel anden metode som er bedre til at løse
"problemet" ?

Brian

 
 
Benny Nissen (21-12-2004)
Kommentar
Fra : Benny Nissen


Dato : 21-12-04 09:31

Brian Sprogø formulated the question :

> document.kamera.src = "ftp://192.168.16.20/fjernvejning/hassel.jpg";

Skal det ligge på nettet så andre kan se det ?
I så fald skal du jo ikke bruge en Class-C adresse til billedet.
.... og da slet ikke en åben ftp-server.
Nå, det er nok bare et eksempel.

> window.onload = function(){setInterval('update()',5000)}

Prøv med:
<body onLoad="javascript:setInterval('update()',5000);">

--
Benny


Brian Sprogø (21-12-2004)
Kommentar
Fra : Brian Sprogø


Dato : 21-12-04 10:48

Benny Nissen wrote:

>> document.kamera.src = "ftp://192.168.16.20/fjernvejning/hassel.jpg";
>
> Skal det ligge på nettet så andre kan se det ?
> I så fald skal du jo ikke bruge en Class-C adresse til billedet.
> ... og da slet ikke en åben ftp-server.
> Nå, det er nok bare et eksempel.

Nope - skal ikke bruges på internet.
Det er kun til internt brug.

.... ellers tak - det kunne jo ha' skabt nogle problemer

> Prøv med:
> <body onLoad="javascript:setInterval('update()',5000);">

Det ser ikke rigtig ud til at virke.

Hvis jeg skriver:

<body onLoad=javascript:setInterval('update()',5000);>

.... altså fjerner gåseøjnene, bliver funktionen kørt en enkelt gang - og
ikke mere end det.

Benny Nissen (21-12-2004)
Kommentar
Fra : Benny Nissen


Dato : 21-12-04 11:52

It happens that Brian Sprogø formulated :

> <body onLoad=javascript:setInterval('update()',5000);>
>
> ... altså fjerner gåseøjnene, bliver funktionen kørt en enkelt gang - og ikke
> mere end det.

Hvorfor tror du ikke den bliver kørt mere end en gang ?
Har du prøvet at indsætte en alert("Nu blev funktionen kørt"); inde i
funktionen ?

Jeg tror det har noget med browser cache at gøre.
Hvis du tilføjer en parameter tilbilledet vil dette tvinge browseren
til at genindlæse billedet fra ftp-serveren og ikke bruge
cache-billedet.
Nedenstående kode er testet og virker her hos mig (dog med et andet
billede)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>V&aelig;gt Afdeling</title>
<script type="text/javascript">
function update()
{
parm = Math.floor(Math.random()*1000);
document.kamera.src =
"ftp://192.168.16.20/fjernvejning/hassel.jpg?parm="+parm;
}
</script>
</head>
<body onLoad="javascript:setInterval('update()',5000);">
<img name="kamera" alt="afdeling" src=""
style="width: 100%; height: 100%;">
</body>
</html>

--
Benny


Brian Sprogø (21-12-2004)
Kommentar
Fra : Brian Sprogø


Dato : 21-12-04 15:07

Hej Benny,

Benny Nissen wrote:

>
> Hvorfor tror du ikke den bliver kørt mere end en gang ?

Som udgangspunkt er billedet uden 'src'. Første gang scriptet bliver
kørt, skal 'src' ændres og billedet skal fremkomme. Derfor kan jeg se at
det bliver kørt første gang
Jeg ved også at billede-source'en ændrer sig hver 3. sekund - så hvis
opdateringen af 'src' virker, vil jeg kunne se billedet ændrer sig.

> Har du prøvet at indsætte en alert("Nu blev funktionen kørt"); inde i
> funktionen ?

Nej...

> Jeg tror det har noget med browser cache at gøre.
> Hvis du tilføjer en parameter tilbilledet vil dette tvinge browseren til
> at genindlæse billedet fra ftp-serveren og ikke bruge cache-billedet.
> Nedenstående kode er testet og virker her hos mig (dog med et andet
> billede)
>
> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
> <html>
> <head>
> <meta content="text/html; charset=ISO-8859-1"
> http-equiv="content-type">
> <title>V&aelig;gt Afdeling</title>
> <script type="text/javascript">
> function update()
> {
> parm = Math.floor(Math.random()*1000);
> document.kamera.src =
> "ftp://192.168.16.20/fjernvejning/hassel.jpg?parm="+parm;
> }
> </script>
> </head>
> <body onLoad="javascript:setInterval('update()',5000);">
> <img name="kamera" alt="afdeling" src=""
> style="width: 100%; height: 100%;">
> </body>
> </html>

hmmm...

Nu bliver jeg mere forvirret...

Jeg har forsøgt mig med kode du foreslog.

I IE vises bare outline af billedet og et rødt kryds i øverste venstre.
Jeg kan se ved at kigge på egenskaber for billedet, at det rigtig nok
bliver indlæst med et nyt 'parm'.

Det "sjove" er så, at det virker i min Firefox. Helt uden slinger i valsen.

Jeg tror at du kan ha' ret i at det er cache'en der er problemet i
første omgang. Er der ikke en måde at slå det fra - synes ikke rigtig at
jeg kan finde noget i henholdsvis IE og til selve HTML'en.

Brian

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste