Autor Zpráva
pozortucnak
Profil *
Dobrý den.

Našel jsem si tento zdrojový kód, funguje skvěle....
<script type="text/javascript" language="JavaScript">
	newImage = new Image();
	
	function LoadNewImage()
	{
		var unique = new Date();
		document.images.webcam.src = newImage.src;
		newImage.src = "http://path/to/webcam.jpeg?time=" + unique.getTime();
	}

	function InitialImage()
	{
		var unique = new Date();
		newImage.onload = LoadNewImage;
		newImage.src = "http://path/to/webcam.jpeg?time=" + unique.getTime();
		document.images.webcam.onload="";
	}
</script>



Jen bych ten kód potřeboval upravit, aby byl mezi načítanými obrázky zhruba vteřinový interval...
Poradíte jak na to? Trochu jsem si s tím hrál, ale tak nějak nerozumím tomuto:newImage.onload = LoadNewImage; způsobu volání funkce...

http://web.nickshanks.com/code/js/cams
tayger
Profil *
připadá mi to trochu divné, že volání funkce není zakončeno závorkamy, ale jinak ten řádek znamená, přiřaď do newImage.onload výsledek funkce LoadNewImage. Domnívám se, že ta pravá strana bude vlastnost nebo metoda objektu newImage. Pokud jde o to spomalení, tak řešit přes časovací funkci setTimeout() může být řešením, jen netuším kam to hodit, to už nechám na tobě, možná už při inicializaci nebo před zobrazením.
__construct
Profil
pozortucnak:
Prečo to robíš tak zložito ?
<script type="text/javascript">
    refreshImage = function(){
        img = document.getElementById("cam");
        img.src="http://adresa/video.jpg?rand=" + Math.random();
    }
    window.onload=window.setInterval(refreshImage, 1*1000);
</script>
<img alt="obrázok" src="http://adresa/video.jpg" id="cam" />
Chamurappi
Profil
Reaguji na pozortucnaka:
nějak nerozumím tomuto:newImage.onload = LoadNewImage; způsobu volání funkce
Funkce se nevolá, je to obyčejné přiřazení. Jakmile nastane událost onload na obrázku newImage, zavolá se funkce LoadNewImage.

Uprav ji takhle:
    function LoadNewImage()
    {
        var unique = new Date();
        document.images.webcam.src = newImage.src;
        setTimeout(function()
        {
            newImage.src = "http://path/to/webcam.jpeg?time=" + unique.getTime();
        }, 1000);
    }
Viz Časování na JPW. Kdyby byla sekunda málo (mně připadá krátká), tak tu tisícovku zvyš.


Reaguji na taygera:
připadá mi to trochu divné, že volání funkce není zakončeno závorkamy
Však to také není volání funkce, proto tam nejsou závorky.

jinak ten řádek znamená, přiřaď do newImage.onload výsledek funkce LoadNewImage
To by znamenal, kdyby se funkce volala. Viz Rozdíl mezi voláním funkce a funkcí ve FAQ.


Reaguji na __constructa:
Prečo to robíš tak zložito ?
Není to složité zbytečně — skript funguje tak, že přednačte nový obrázek do keše a pak teprve nahradí starý src v <img> za nový. Uživatel díky tomu nevidí postupné načítání nového obrázku, prakticky pořád bude mít na očích kompletní obrázek.

window.onload=window.setInterval(refreshImage, 1*1000);
Přiřazuješ výsledek setIntervalu, což je číslo, a zavolá se okamžitě, nikoliv až při onloadu.
Formis
Profil *
Zdravím,
oba zde uvedené příklady zdrojových kóků mi fungují pouze při prvním načtení obrázku, pak již ne a ukáže se pouze obdelníšek s křížkem. setInterval funguje. Když dám vlastnosti nenačteného obrázku, tak cesta k obrázku je správně, ale na konci celé cesty je nějaké nesmyslné číslo např. : ...temp6h.png0.18482253581786512 . První načtený obrázek má konec v pořádku : ... temp6h.png .
Neví někdo, kde by mohl být problém?
Jde mi o to, že se mi tento soubor(temp6h.png) pravidelně uploaduje, tak bych chtěl, aby se mi automaticky načítal(zobrazoval v miniaplikaci na ploše nebo v html souboru).
Nebo je vhodnější použít jiný kód?
Předem díky za pomoc.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0