Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

143
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!