Tema: Proyecto
Ver Mensaje Individual
  #8 (permalink)  
Antiguo 17/08/2015, 13:13
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Proyecto

Te recomiendo no usar mensajes de alerta para depurar el código; lo mejor es hacerlo desde la consola del navegador.

Por otro lado, haciendo algunas pruebas con lo que hiciste, me di con la sorpresa de que el algoritmo funcionaba cuando cambiaba a document.documentElement.clientHeight por window.innerHeight; lo curioso es que ambos devuelven el mismo valor que no es otra cosa que la altura del documento (de lo que se está viendo en pantalla) sin incluir al menú del navegador ni a las barras de desplazamiento ni a los bordes y margen. Ojalá que alguien en el foro que sepa más de esto, nos lo pueda explicar mejor.

En fin. Esto quedaría así:

Código Javascript:
Ver original
  1. document.addEventListener("DOMContentLoaded", function(){
  2.     [].forEach.call(document.querySelectorAll("[id^=parte]"), function(section){
  3.         window.addEventListener("scroll", function(){
  4.             if (this.scrollY >= section.offsetTop - this.innerHeight &&
  5.                 this.scrollY + this.innerHeight <= section.offsetHeight + section.offsetTop){
  6.                 section.querySelector("audio").play();
  7.             }
  8.             else{
  9.                 section.querySelector("audio").pause();
  10.             }
  11.         }, false);
  12.     });
  13. }, false);

Por cierto, hice la prueba con 200 secciones, cada una con su respectivo <audio> y la consecuente carga del archivo de audio que contiene, y no hubo ningún problema; todo cargó en aproximadamente 7.5 segundos (haciendo varias pruebas) y como supongo que tendrás menos secciones que las 200 de mi prueba, pues, la carga tomará menos tiempo.

Y solo como consejo para el uso del foro; cuando vayas a mostrar código, por favor, utiliza el highlight respectivo para que sea más legible. Lo puedes encontrar justo a la derecha del botón de cita.

Saludos
__________________
«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