[JS] Webcambeeld refresh maar niet als webcam offline is *

Pagina: 1
Acties:

  • Ebayzo
  • Registratie: Juli 2001
  • Laatst online: 17-10-2022
Ik ben bezig met een klein scriptje voor webcambeelden.

De beelden worden geserveerd door een webcamapplicatie. Beelden kunnen opgevraagd worden d.m.v. [img]"http://ipadres:8080">. Dit[/img]. Alleen heb ik het allemaal nog niet werkend gekregen. Inmiddels sta ik weer op het nulpunt en weet niet wat ik nog kan proberen om het werkend te krijgen.

Heeft één van jullie een goede tip voor dit probleem? Misschien een goede iets d.m.v. die onerror tag?

[ Voor 3% gewijzigd door Ebayzo op 06-12-2004 14:01 ]

Default blanke hetero


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19-05 13:45

gorgi_19

Kruimeltjes zijn weer op :9

Hoe wil je het oplossen? :) Op de client dmv van Javascript of dmv gegenereerde PHP, welke zelf 1x per 5 minuten controleert en de state onthoudt ? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Ebayzo
  • Registratie: Juli 2001
  • Laatst online: 17-10-2022
gorgi_19 schreef op maandag 06 december 2004 @ 12:33:
Hoe wil je het oplossen? :) Op de client dmv van Javascript of dmv gegenereerde PHP, welke zelf 1x per 5 minuten controleert en de state onthoudt ? :)
Het liefst controleer ik het realtime. Denk dat dit via Javascript dan het beste werkt? Helaas ben ik niet zo op de hoogte van alle mogelijkheden van JS maar mischien dat er iets van een commando is dat je kan aanroepen via de onerror attribuut zodat het refresh script gestopt wordt (Een HALT commando oid).

[ Voor 26% gewijzigd door Ebayzo op 06-12-2004 14:00 ]

Default blanke hetero


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19-05 13:45

gorgi_19

Kruimeltjes zijn weer op :9

Als je het via Javascript wilt oplossen, dan zit je fout in Programming & Webscripting :)

>> Webdesign & Graphics

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
je kunt met js / dom een afbeelding maken en bij de onload daarvan vervang je de bestaande afbeelding in je document...

JavaScript:
1
2
3
4
5
6
7
var objImage = document.createElement('img');

objImage.onload = function(){
    document.body.appendChild(this);
}

objImage.setAttribute('src', 'afbeelding.jpg');


zelf ff de setTimeout() erin bouwen...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 18:05
Kan dit niet met de onerror attribuut? Dan dus die bovenstaande functie aanroepen. Met timout e.d. is niet echt nodig imo.

[ Voor 53% gewijzigd door djluc op 06-12-2004 13:41 ]


  • Ebayzo
  • Registratie: Juli 2001
  • Laatst online: 17-10-2022
faabman schreef op maandag 06 december 2004 @ 13:13:
je kunt met js / dom een afbeelding maken en bij de onload daarvan vervang je de bestaande afbeelding in je document...

JavaScript:
1
2
3
4
5
6
7
var objImage = document.createElement('img');

objImage.onload = function(){
    document.body.appendChild(this);
}

objImage.setAttribute('src', 'afbeelding.jpg');


zelf ff de setTimeout() erin bouwen...
Mijn JS kennis is zeer beperkt dus kun je dit voorbeeld even uitleggen? Wat is de werkt het en hoe gebruik ik het? Beetje gespeeld...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<script type="text/javascript">
function cam_offline() {
var objImage = document.createElement('img');

objImage.onload = function(){
document.body.appendChild(this);
}

objImage.setAttribute('src', 'images/layout/cam_offline.gif');
}
</script>
            
[img]"http://127.0.0.1:8080"[/img]

Als het nu niet gevonden wordt komt er een kruisje op de plaats waar het beeld staat en het offline plaatje helemaal links in de bovenhoek :/ wat doe ik fout :P

Misschien erg brutaal, maar is dit niet hetzelfde als:

code:
1
[img]"http://127.0.0.1:8080[/img]


Want dit had ik al eerder geprobeerd maar ik kreeg het niet zo werkend dat het refreshen van het plaatje stopte zodra het plaatje niet beschikbaar was.

[ Voor 59% gewijzigd door Ebayzo op 06-12-2004 14:19 ]

Default blanke hetero


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
ik bedoelde dus zegmaar dat je die functie aanroept op het moment dat je de pagina laad...

dus:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<body>
[img]"afbeelding.jpg"[/img]

<script type="text/javascript">
function loadImage(){
  var objImage = document.createElement('img');
  
  objImage.onload = function(){
    this.setAttribute('id', 'webcam-afbeelding');
    document.body.replaceChild(this, document.getElementById('webcam-afbeelding'));
    
    setTimeout('loadImage()', 5000)
  }
  
  objImage.setAttribute('src', 'afbeelding.jpg');
}

loadImage();
</script>
</body>


waarbij ik er dus van uit ga dat er geen afbeelding staat op het moment dat je webcam uit staat...

disclaimer: niet getest

[ Voor 28% gewijzigd door faabman op 06-12-2004 14:31 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Ebayzo
  • Registratie: Juli 2001
  • Laatst online: 17-10-2022
Ik krijg nu allen het offline plaatje :/ en een error (in IE) als de webcamapplicatie aanstaat (invalid argument op de document.body.replaceChild lijn)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[img]"images/layout/cam_offline.gif"[/img]

<script type="text/javascript">
function loadImage(){
var objImage = document.createElement('img');
  
objImage.onload = function(){
this.setAttribute('id', 'webcam-afbeelding');
document.body.replaceChild(this, document.getElementById('webcam-afbeelding'));
    
setTimeout('loadImage()', 5000)
}
  
objImage.setAttribute('src', 'http://127.0.0.1:8080');
}

loadImage();
</script>


Maar ik vraag me nu dus toch af wat het voordeel van dit script is? Want een ander plaatje weergeven kan ook met onerror. Het probleem is dat ik niet wil dat het beeld blijft verversen als de cam offline is.

[ Voor 127% gewijzigd door Ebayzo op 06-12-2004 14:49 ]

Default blanke hetero


  • Ebayzo
  • Registratie: Juli 2001
  • Laatst online: 17-10-2022
code:
1
2
3
4
5
6
7
8
9
<script language="javascript"> 
var refreshrate=6;
var image="http://127.0.0.1:8080";
function refresh(){  
document.images["pic"].src=image+"?"+new Date(); 
setTimeout('refresh()', refreshrate*1000);} 
document.write('[img]"'+image+'"[/img]'); 
if(document.images)window.onload=refresh; 
</script>


Is er een manier om bijvoorbeeld bovenstaand script alleen te laden als de webcam beschikbaar is. Of juist te disablen op onerror

Want ik ben nog met het script van Faabman bezig geweest maar snap de bedoeling erachter niet helemaal.

[ Voor 46% gewijzigd door Ebayzo op 06-12-2004 17:06 ]

Default blanke hetero


  • _MaLa_
  • Registratie: Maart 2001
  • Laatst online: 18-12-2022
Dus je wil checken als client down is dat ie niet refresht. Maybe iets maken dat ie host checkt of dat cam prog on is. Wat gebruik je trouwens als programma voor dat webcam gebeuren ?

  • Ebayzo
  • Registratie: Juli 2001
  • Laatst online: 17-10-2022
_MaLa_ schreef op maandag 06 december 2004 @ 19:48:
Dus je wil checken als client down is dat ie niet refresht. Maybe iets maken dat ie host checkt of dat cam prog on is. Wat gebruik je trouwens als programma voor dat webcam gebeuren ?
Ja precies....

Het webcambeeld moet gewoon vernieuwd worden elke 5 seconden. Hier zijn zat scripts beschikbaar voor. Da's het probleem niet. Het probleem is dat het refreshen van het beeld moet stoppen (of niet beginnen bij het laden) als de webcam offline is. (onerror attribuut?) Ik heb al wat rondgekeken maar kan hier niets bruikbaars voor vinden.

Host checken is geen ideale oplossing omdat dit dikke time-outs kan geven. Niet echt ideaal dus. Het onerror attribuut is veel gebruiksvriendelijker...

offtopic:
De beelden worden geserveerd door een aangepaste versie van het open-source proggie Dorgem

[ Voor 10% gewijzigd door Ebayzo op 06-12-2004 19:52 ]

Default blanke hetero


  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-07-2024
Je kan met die "onerror" toch een functie aanroepen die:
a) de timeout stopt
b) de afbeelding op "offline" zet

  • Ebayzo
  • Registratie: Juli 2001
  • Laatst online: 17-10-2022
maartenba schreef op maandag 06 december 2004 @ 22:09:
Je kan met die "onerror" toch een functie aanroepen die:
a) de timeout stopt
b) de afbeelding op "offline" zet
Ja dat zal best kunnen. Maar hoe schakel ik die timeout() uit dan? Is dat een standaard functie dan?

* Ebayzo gaat even knutselen..zometeen ff script posten

[ Voor 12% gewijzigd door Ebayzo op 06-12-2004 22:47 ]

Default blanke hetero


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
<body>
[img]"1.png"[/img]
<script type="text/javascript">
document.getElementById('afbeelding').onload = function(){
    setTimeout("document.getElementById('afbeelding').src = '2.png'", 5000);
}

document.getElementById('afbeelding').onerror = function(){
    this.src = 'niet-beschikbaar.jpg';
}
</script>
</body>

waarbij je zelf maar even moet spelen met de namen van je afbeeldingen...

[ Voor 29% gewijzigd door faabman op 06-12-2004 23:41 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Ebayzo
  • Registratie: Juli 2001
  • Laatst online: 17-10-2022
faabman schreef op maandag 06 december 2004 @ 23:41:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
<body>
[img]"1.png"[/img]
<script type="text/javascript">
document.getElementById('afbeelding').onload = function(){
    setTimeout("document.getElementById('afbeelding').src = '2.png'", 5000);
}

document.getElementById('afbeelding').onerror = function(){
    this.src = 'niet-beschikbaar.jpg';
}
</script>
</body>

waarbij je zelf maar even moet spelen met de namen van je afbeeldingen...
Ok bedankt...ben op dit moment met je scriptje bezig. Ik wil het namelijk zo hebben dat die refresh wel ophoudt zodra de cam offline is (onerror)

Default blanke hetero


  • Ebayzo
  • Registratie: Juli 2001
  • Laatst online: 17-10-2022
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[img]"http://127.0.0.1:8080"[/img]
<script type="text/javascript">
    var wacht;
    document.getElementById('afbeelding').onload = function(){
        if(wacht == undefined) wacht = 1000;
                setTimeout("document.getElementById('afbeelding').src = 'http://127.0.0.1:8080'", wacht);
                if(wacht == 300000) wacht = 1000;
    }

    document.getElementById('afbeelding').onerror = function(){
        wacht = 300000;
        this.src = 'images/layout/cam_offline.gif';
    }
</script>


Zo heb ik het nu. Is dit een beetje effectief gedaan? (Als Cam online is 1000ms refreshtijd anders 5 minuten voordat ie automatisch checked offie al online is)

Maar nu het volgende probleem....andere browsers dan IE snappen er dus niets van (Opera en Firefox). Kunnen jullie nog een tip geven daarvoor?

[edit]
code:
1
setTimeout("document.getElementById('afbeelding').src = 'http://127.0.0.1:8080"+"?"+new Date()+"'", wacht);

Door deze toevoeging trapt Firefox al wel in het trucje...nu Opera nog :(

Suggesties?

* Ebayzo denkt dat de Opera gebruikers maar pech hebben. Of weet iemand een goede oplossing zo gauw?

[ Voor 79% gewijzigd door Ebayzo op 07-12-2004 01:12 ]

Default blanke hetero

Pagina: 1