usando jQuery 3.4.1: configuré un sistema en el que un administrador, cuando inicie sesión, tendrá un script ejecutándose cada 5 segundos para verificar si algún usuario ha iniciado una solicitud de chat. Si es así, aparecerá una ventana con el nombre de los usuarios y su pregunta/mensaje inicial.
Además de la ventana, quiero reproducir un sonido de alerta para que el administrador sepa cuándo se realiza una solicitud de chat, pero el problema es que si pongo el audio dentro del script que verifica las solicitudes de chat, se reproducirá de inmediato (si inician sesión y ya hay una solicitud de chat) y luego cada 5 segundos, lo cual es muy irritante.
Para remediarlo, traté de verificar si el div de solicitud de chat está visible y luego reproduje el sonido, pero no se reproducirá de esta manera y no recibo ningún mensaje de consola al respecto. Creo que esto sucede porque el sonido requiere la interacción del usuario en orden de jugar.
Aquí está mi código actual.
// Chat Request Notification Sound (not working) var chatstartsound = new Audio('../img/root/start.wav'); if ($('#chatrequest').is(":visible")) { chatstartsound.play(); } // Chat Request (function chatrequest() { $.ajax({ url:"../inc/chat-request.php", method:"POST", context: document.body, // This is to stop the AJAX spinner appearing every 5 seconds. global: false, // This is to stop the AJAX spinner appearing every 5 seconds. success:function(data) { $("#chatrequest").html(data); $("#chatrequest").delay(5000).show(200); } }).then(function() { setTimeout(chatrequest, 5000); }); })();