Ich bin daran interessiert, eine HTML-Seite mit mehreren Videoclips zu erstellen, so dass jeder Videoclip nur solange sichtbar abgespielt wird und dann pausiert, wenn er nicht sichtbar ist. Ich habe this great example gefunden, wie dies mit einem Clip implementiert werden kann, aber ich konnte den Code nicht ändern, um mit mehreren Clips zu arbeiten. Vielleicht muss ich diesen Code in eine Funktion für die einfache Wiederverwendbarkeit umwandeln? Hier ist, was ich bisher habe (JS Bin oben verlinkt für 2 Clips anstelle von einem geändert). Dieser Code scheint nur für einen der beiden Clips zu funktionieren.HTML5 und Javascript zum Abspielen von Videos nur wenn sichtbar
<!DOCTYPE html>
<html>
<!-- Created using jsbin.com Source can be edited via http://jsbin.com/ocupor/1/edit
-->
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
<style>
#right {
position: absolute;
top: 2000px;
}
#video1 {
position: absolute;
left: 2000px;
top: 2000px;
}
#video2 {
position: absolute;
left: 2000px;
top: 3000px;
}
</style>
<style id="jsbin-css">
</style>
</head>
#
<body style="width: 4000px; height: 4000px;">
<div id="info"></div>
<div id="down">
scroll down please...
</div>
<div id="right">
scroll right please...
</div>
<video id="video1">
<source src="http://video-js.zencoder.com/oceans-clip.mp4"/>
</video>
<script>
var video = document.getElementById('video1'), fraction = 0.8;
function checkScroll() {
var x = video.offsetLeft, y = video.offsetTop, w = video.offsetWidth, h = video.offsetHeight, r = x + w, //right
b = y + h, //bottom
visibleX, visibleY, visible;
visibleX = Math.max(0, Math.min(w, window.pageXOffset + window.innerWidth - x, r - window.pageXOffset));
visibleY = Math.max(0, Math.min(h, window.pageYOffset + window.innerHeight - y, b - window.pageYOffset));
visible = visibleX * visibleY/(w * h);
if (visible > fraction) {
video.play();
} else {
video.pause();
}
}
checkScroll();
window.addEventListener('scroll', checkScroll, false);
window.addEventListener('resize', checkScroll, false);
</script>
<video id="video2">
<source src="http://video-js.zencoder.com/oceans-clip.mp4"/>
</video>
<script>
var video = document.getElementById('video2'), fraction = 0.8;
function checkScroll() {
var x = video.offsetLeft, y = video.offsetTop, w = video.offsetWidth, h = video.offsetHeight, r = x + w, //right
b = y + h, //bottom
visibleX, visibleY, visible;
visibleX = Math.max(0, Math.min(w, window.pageXOffset + window.innerWidth - x, r - window.pageXOffset));
visibleY = Math.max(0, Math.min(h, window.pageYOffset + window.innerHeight - y, b - window.pageYOffset));
visible = visibleX * visibleY/(w * h);
if (visible > fraction) {
video.play();
} else {
video.pause();
}
} checkScroll();
window.addEventListener('scroll', checkScroll, false);
window.addEventListener('resize', checkScroll, false);
</script>
</body>
</html>
Ich versuche, diesen Code für mich arbeiten zu lassen, es ist viel einfacher. Ich habe jedoch Schwierigkeiten. Da ich zu einer Wordpress-basierten Website gewechselt habe, folgen meine Videos dem folgenden Beispielformat: 'class =" wp-video-shortcode "id =" video-1115-1 "' – UltrasoundJelly
Irgendeine Möglichkeit, [0] zu ändern damit arbeiten ist 'video-XXXX-X' formatieren? – UltrasoundJelly
Können wir bei Vimeo beantragen, dass es unter iframe läuft? Wie man? – wpcoder