¿Alguien puede explicarme cómo puedo reproducir y pausar este objeto incrustado de Spotify? Intenté encontrar la identificación del jugador pero no pude.
URL → https://open.spotify.com/embed-podcast/show/5iKz9gAsyuQ1xLG6MFLtQg
Este es el código del iframe:
<iframe src="https://open.spotify.com/embed/show/5iKz9gAsyuQ1xLG6MFLtQg?utm_source=generator&&size=detail&theme=light" style="border:0px #ffffff none;" name="myiFrame" scrolling="yes" frameborder="1" marginheight="0px" marginwidth="0px" height="100%" width="100%" allowfullscreen=""></iframe>
¡¡Gracias!!
Es extraño que no pude encontrar esto documentado en ninguna parte, pero pude mirar a través del código de inserción para darme cuenta de que escucha postMessage
eventos posteriores al mensaje para la comunicación de origen cruzado y su solicitud es posible.
El código general sería:
// Get a reference to the embed iframe element const spotifyEmbedWindow = document.querySelector('iframe[src*="spotify.com/embed"]').contentWindow; spotifyEmbedWindow.postMessage({command: 'toggle'}, '*');
El código anterior debería iniciar la reproducción incrustada si está pausada o detenida, y pausarla si ya se está reproduciendo.
Hay algunos otros comandos, pero probablemente no sean lo que está buscando ( 'play'
, por ejemplo, en realidad reinicia el reproductor al comienzo de la pista, y no hay un comando explícito 'pause'
).
PD: Parece que Spotify ha implementado esta comunicación en ambos sentidos: puede recibir actualizaciones desde la inserción (por ejemplo, si desea saber si alguien lo ha pausado), escuchando eventos de
'message'
en la ventana principal.
Usaría un código como este, pero no funcionará debido a problemas de origen cruzado:
document.querySelector('iframe').contentWindow.document.body.querySelector('#play-button')
Pero obtiene: DOMException no detectada: permiso denegado para acceder a la propiedad "documento" en el objeto de origen cruzado
Así que creo que esto no se puede lograr, pero estaría feliz de estar equivocado.