Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

144
Vistas
La imagen Javascript navigator.mediasession no se muestra en el navegador / los controles multimedia desaparecen

De nuevo, trabajando en mi reproductor de audio...

He redescubierto un actualizador de mediasession en mi código que agrega una pequeña notificación desde el navegador con controles para mi música, y solía funcionar bien, un poco quisquilloso, pero ahora...

Nada. Jugué un poco y conseguí que mis botones de reproducción/pausa funcionaran, junto con las canciones siguiente/anterior y los botones de búsqueda, y el título de la música y el artista. Pero ahora descubrí que si presionas el botón de reproducción, el botón siguiente/anterior o, a veces, el botón de pausa, las opciones y los detalles de la canción desaparecen, dejándome solo con el botón de reproducción/pausa, que funciona perfectamente...

Ahora, al código. Tengo una función que carga las canciones en mi reproductor ( loadSong(songIndex) ), y cerca del final, tengo algunas líneas de código que restablecen los metadatos del navegador:

 navigator.mediaSession.metadata.title = song.songname; navigator.mediaSession.metadata.author = song.artistname; navigator.mediaSession.metadata.artwork = ("./Music/" + song.thumbnail);

El artista y el nombre funcionan perfectamente, pero la miniatura no... Más sobre eso en una pregunta separada.

Configuré los controles reales así:

 /*media controls*/ let index = 0; let skipTime = 10; const actionHandlers = [ ['play', () => { main.playPauseControl.click(); navigator.mediaSession.playbackState = "playing"; updatePositionState();}], ['pause', () => { main.playPauseControl.click(); navigator.mediaSession.playbackState = "paused"; updatePositionState();}], ['previoustrack', () => { main.prevControl.click(); updatePositionState();}], ['nexttrack', () => { main.nextControl.click(); updatePositionState();}], ['seekbackward', (details) => { main.audio.currentTime = Math.max(main.audio.currentTime - skipTime, 0); updatePositionState();}], ['seekforward', (details) => { main.audio.currentTime = Math.min(main.audio.currentTime + skipTime, main.audio.duration); updatePositionState();}], ]; for (const [action, handler] of actionHandlers) { try { navigator.mediaSession.setActionHandler(action, handler); } catch (error) { console.log(`The media session action "${action}" is not supported yet.`); } }

Tengo algunas otras cosas vinculadas a la mediaSession para poder registrar interacciones fuera del navegador.

 main.audio.addEventListener('play', function() { navigator.mediaSession.playbackState = 'playing'; main.playPauseControl.classList.remove("paused"); }); main.audio.addEventListener('pause', function() { navigator.mediaSession.playbackState = 'paused'; main.playPauseControl.classList.add("paused"); });

Ahora todo esto funciona, inicialmente, pero tan pronto como interactúo con el navegador, BOOM, todo desaparece. ¿Puede alguien, POR FAVOR, decirme qué está pasando? Esto me ha estado molestando por un tiempo...

PD: perdón por la pregunta larga.

about 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda