Остановка динамически создаваемого проигрывателя Soundcloud oEmbed при закрытии модального
Я работаю над веб-приложением, которое позволяет людям обмениваться ссылками из Soundcloud, копируя и вставляя URL. Затем веб-приложение генерирует текущий список людей, позволяя пользователям открывать модальное окно, которое загружает проигрыватель Soundcloud (через SC.oEmbed). URL получен из элемента, который открывает модальное. Поэтому SC.oEmbed открывает URL-адрес, найденный в атрибуте href.
У меня все работает отлично, за исключением того, что когда модал закрыт, музыка продолжает играть.
Похоже, что нет функции stop() или pause(), связанной с этим проигрывателем, как с проигрывателем виджетов. Единственное решение, которое я нашел, - это закрыть SC.oEmbed, чтобы открыть еще одну случайную ссылку на soundcloud, но с отключенным auto_play. Это работает, но кажется действительно не элегантным и пустой тратой ресурсов. Там должно быть лучшего способа нет? О, и я тоже использую Twitter Bootstrap.
Вот мой код jQuery:
$(document).ready( function() {
SC.initialize({
client_id: "xxxxxxxxxxxxxxxxxx",
});
$("a[data-target='#myModal']").click(function(event) {
event.preventDefault(); /* makes sure <a> link doesn't actually open new window */
var url = this.href; // gets Soundcloud URL from href in <a> element
SC.oEmbed(url, { auto_play: false }, document.getElementById("audio_1_body"));
});
/* this part below is what I want to improve -- loading up a random track, just to stop playing of track that was loaded in the modal */
$("#myModal").on("hidden.bs.modal", function(){
url = "https://soundcloud.com/the-deep-dark-woods/sugar-mama-1";
SC.oEmbed(url, { auto_play: false }, document.getElementById("audio_1_body")); //this last part is what I want to improve
});
1 ответ
Не похоже, что есть способ сделать это из SC JS SDK.
Лучшее, что вы можете сделать, это удалить SC iframe:
$('#audio_1_body').html('')