Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

147
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda