Estoy haciendo un sitio web, que debe sonar una campana 5 minutos antes de un evento.
El código generalmente funciona, pero a veces (¿para algunos dispositivos?), no suena el timbre y solo suena cuando se recarga la página.
El código que puede encontrar a continuación, como puede ver, la misma función se ejecuta justo después de la recarga y cada 1 minuto, por lo que es extraño que no suene automáticamente sino que suene después de recargar la página.
... ring_bell: function() { if (<.. Time check is here ..>) { new Audio('media/bell.mp3').play(); } } ... schedule.ring_bell(); setInterval(() => { schedule.update_numbers();// updates time values on the web page schedule.ring_bell(); }, 60*1000);Sucedió en MacBook, en Google Chrome. Otros hechos a tener en cuenta:
a) update_numbers se ejecuta junto con la campana, que actualiza el aspecto de la página, incluido el número de "tiempo restante para el evento" en la página y los datos en la página estaban actualizados (es decir, el tiempo era negativo), a pesar del hecho que no se ha escuchado el sonido de la campana . Por lo tanto, se puede concluir que el temporizador no es el problema.
b) Se sabe que el sonido se reproduce correctamente cuando la pestaña está inactiva.
Me pregunto, ¿puede intervenir algo relacionado con el sistema operativo? ¿Hay alguna manera de garantizar que el sonido se reproduzca incluso si el usuario no toca su dispositivo durante mucho tiempo? No necesito tiempos precisos. +/-1 minuto es más que suficiente.
PD: abro esta pregunta nuevamente después de que se haya cerrado instantáneamente como un duplicado de ¿Cómo puedo hacer que setInterval también funcione cuando una pestaña está inactiva en Chrome? , espero nuevos hechos dejen en claro que es un problema diferente y la respuesta a esa pregunta no me puede ayudar en lo más mínimo.