Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/04/2014, 01:20
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Reproducir video solo cuando este en pantalla

Creo que esto es lo que buscas. También hay un plugin en jQuery de nombre Lazy Load que permite hacer lo mismo.

En el primer enlace, se retrasa la carga de imágenes en un documento hasta que la barra de desplazamiento se encuentre a la altura de las mismas, recién en ese momento se cargan y muestran. En tu caso, harías algo similar, con la diferencia que para reproducir y pausar el vídeo, utilizarías los métodos play y pause.

Saludos

Edito:

Como me interesó el tema, decidí hacer mi algoritmo:

Código Javascript:
Ver original
  1. var video = document.getElementsByTagName("video")[0];
  2. window.addEventListener("scroll", function(){
  3.     if (this.scrollY >= (video.offsetTop - document.documentElement.clientHeight))
  4.         video.play();
  5.     else
  6.         video.pause();
  7. }, false);

Cuando hago scroll (desplazarnos con la barra de desplazamiento vertical), verifico lo siguiente; si la cantidad de píxeles que me he desplazado es mayor o igual a la diferencia de la distancia que hay entre el elemento <video> y el cuerpo del documento (el tope) menos la altura del elemento raíz del documento, ejecuto el método play(), caso contrario, ejecuto el método pause().

Métodos utilizados:

- scrollY
- offsetTop
- clientHeight
- documentElement (propiedad)

Lo he probado localmente y va de maravilla.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 22/04/2014 a las 11:46 Razón: Otra solución