Html5 video események
Sziasztok!
A következő problémám lenne! Szeretnémha a HTML 5 video lejátszása közben bizonyos időszakokra meg tudjak jeleníteni dolgokat a honlapon. Pl: megy a szöveg és mondja h kattints a most megjelenő piros gombra és akkor tűnik fel a gomb. Próbáltam java scripttel megoldani (settimeout), csak azzal az volt a baj, hogy ha laggol a video vagy csúszik, attól függetlenül a js végrehajtja a feladatot és az egész elcsúszik. Hogy tudjátok pontosan miről is van szó:
Javascripttel megoldott bemutatás
Várom a válaszokat és köszönöm előre is a segítséget!
G
■ A következő problémám lenne! Szeretnémha a HTML 5 video lejátszása közben bizonyos időszakokra meg tudjak jeleníteni dolgokat a honlapon. Pl: megy a szöveg és mondja h kattints a most megjelenő piros gombra és akkor tűnik fel a gomb. Próbáltam java scripttel megoldani (settimeout), csak azzal az volt a baj, hogy ha laggol a video vagy csúszik, attól függetlenül a js végrehajtja a feladatot és az egész elcsúszik. Hogy tudjátok pontosan miről is van szó:
Javascripttel megoldott bemutatás
Várom a válaszokat és köszönöm előre is a segítséget!
G
Tobb video
A masik lehetoseg hogy pollozod a lejatszofejet rendszeres idokozonkent vagy a timeupdate eventtel.
Én elsőre a timeupdate-et
Engem az érdekelne hogy
timeupdate (+JSFiddle)
timeupdate
eseménynél javaslom figyelni acurrentTime
tulajdonságot. Csináltam példának egy JSFiddle-t, ami a videó időbélyege alapján változtatja a videó alatt megjelenő feliratot és az oldal háttérszínét: http://jsfiddle.net/vs6vQ/Ebből szerintem már ki tudsz indulni, láthatod, miként lehet bizonyos függvényeket az időbélyeg alapján meghívni. A
timeupdate
esemény nálam másodpercenként 2-4 alkalommal jelentkezett, ennek intenzitása valószínűleg több tényezőtől is függ, de ez alapján nem tartom túlzottan erőforrás-igényesnek. Célszerű, ha másodpercenként legfeljebb egy alkalommal hívsz meg függvényt, és eltárolod azt is, lefutott-e már a kérdéses függvény (hogy ne hívd meg másodpercenként akár négyszer), vagy az utolsó időbélyeg elmentésével mindig megnézed, hogy az adott másodperc "új-e", tehát csak akkor hajtod végre a függvényt, ha az előző időbélyeg másodperce nem egyezik meg az aktuálissal. De érdemes próbálgatni és kísérletezgetni, mert izgalmas terület ez.(A JSFiddle-ben látott eseménykezelés csak bemutató jellegű, élesben természetesen
addEventListener()
ill.attachEvent()
használatával, vagy a jQuery.on()
metódusával akaszd rá avideo
elemre.)Elkezdtem módosítani a
function hideDiv() {
document.getElementById("toHide2").style.opacity = 0;
}
function showDiv() {
document.getElementById("toHide2").style.opacity = 1;
}
function timeHandler(e) {
var time = e.target.currentTime;
if (time < 3) {
showDiv('#toHide2');
}
else if (time < 27) {
hideDiv('#toHide2');
}
else if (time < 33) {
showDiv('#toHide2');
}
else if (time < 34) {
hideDiv('#toHide2');
}
}
document.querySelector('video').ontimeupdate = timeHandler;
document.querySelector('video').onended = function() { hideSubtitle(); setBg('#F9F9F9'); };
</script>
Eddig tök jól működik minden, viszont több ID-re nem tudok hivatkozni valami miatt, mert egyszerre kezeli őket valamiért. Ezt próbáltam:
function hideDiv() {
document.getElementById("toHide2").style.opacity = 0;
document.getElementById("toHide3").style.opacity = 0;
}
function showDiv() {
document.getElementById("toHide2").style.opacity = 1;
document.getElementById("toHide3").style.opacity = 1;
}
ez egy egységként kezelte mind 2 ID-t. Valami megoldás van erre?
Paraméter
div
-et rejtse el/jelenítse meg. Nagyszerű hírem van: a függvények pont erre valók. Azonban nekik is tudniuk kell arról, hogy paramétert várnak, tehát ha csak a meghívásukkor adsz át paramétert, de a függvénytörzsben erre nem hivatkozol, akkor ezzel nem tudnak mit kezdeni. Az elrejtéshez például:Ha több ID-ra is szeretnél hivatkozni, akkor vagy hívd meg többször az adott függvényt, vagy mindig tömbként add át az ID-k listáját, és a függvényben azokon iterálj végig. Pl.
showDiv(['toHide2', 'toHide3']);
Kód beszúrásakor pedig használj kódszínezőt (a kód köré
[ colorer = js ] ... [ / colorer ]
– szóközök nélkül), mert így tudjuk gyorsan átlátni, és nagyobb eséllyel segíteni. Az eseménykezelést pedig – mint javasoltam – bízd a jQuery-re, vagy használd azaddEventListener()
ill.attachEvent()
függvényeket.Időtúllépés
Máshol lehet a gond
Időtúllépés
Popcorn JS
http://popcornjs.org/