Не удаётся отследить изменения в
Доброго времени суток друзья.
Решил создать аудио-альбом, с плейлистами (php+Mysql) ну и... ajax знаю как отправлять-принимать запросы, обновлять див.
При создании нашел скриптец запрещающий воспроизведение сразу нескольких аудиозаписей, а так же начинающий следующую дорожку по завершении текущей.
(вывожу их просто тегами ).
Всё было хорошо до тех самых пор пока не начал придумывать, внедрять плейлисты. Столкнулся с проблемой которую решить не смог.
Этот волшебный скрипт при обновлении блока
<div id="audiodiv">..тут и выводятся аудио.. </div> прекращает свою работу.
страничка выглядит вот таким образом:
(кнопочка плейлиста onklick="audiorefresh")(кнопочка плейлиста onklick="audiorefresh")
<div id="audiodiv">
SQLзапрос, далее циклом вывожу аудиозаписи и выглядят они так:
<div>
<div> Название песенки </div>
<audio>
</div>
<div>
<div> Название песенки </div>
<audio>
</div>
<div>
<div> Название песенки </div>
<audio>
</div>
</div>
Далее волшебный скрипт:
<script><?php //Для того, что бы нельзя было запустить несколько песен одновременно ?>
let audioNL = document.querySelectorAll('audio');
let audio = Array.apply(null, audioNL);
audio.forEach(t => {
let index = audio.indexOf(t);
t.addEventListener('play', ()=> {
audio.forEach(subT => {
subT !== audio[index] ?
(subT.pause(), subT.currentTime = 0) :
subT.play()
})
})
t.addEventListener('ended', ()=> {
t.currentTime = 0;
index !== audio.length - 1 ?
audio[index + 1].play() :
audio[0].play()
})
});
</script>
и аджакс получающий значения кнопок плейлистов и передающий эти значения моему скрипту php, так же получающий их и пишущий в этот самый #audiodiv
<script>//refresh playlist
function refresh_playlist(pl) {
$('#audiodiv').empty();
$.ajax({
url:'ajax/refreshpl.php',
type:'POST',
cash: false,
data: {'pl' : pl},
dataType: 'html',
success: function(data) {
$('#audiodiv').html(data);
}
});
}
</script>
Вычитал и про Mutation Observer тоже. Пробовал посадить данный волшебный скрипт на него. Но в общем и целом все мои попытки оказались напрасными. Я с ним никогда не работал может писал что не правильно. Или может кроме jQuery библиотеки ещё что-либо требовалось подключить. В общем зашел в тупик. Не могу решить задачу. Прошу помощи советом, примером.
Ответы (1 шт):
Автор решения: Manuelka
Всё заработало, благодаря Stepan Kasyanenko (в комментариях под вопросом).
Сделал всё, как написал.
код выглядит так:
<script><?php //Для того, что бы нельзя было запустить несколько песен одновременно ?>
function nextsong(){
let audioNL = document.querySelectorAll('audio');
let audio = Array.apply(null, audioNL);
audio.forEach(t => {
let index = audio.indexOf(t);
t.addEventListener('play', ()=> {
audio.forEach(subT => {
subT !== audio[index] ?
(subT.pause(), subT.currentTime = 0) :
subT.play()
})
})
t.addEventListener('ended', ()=> {
t.currentTime = 0;
index !== audio.length - 1 ?
audio[index + 1].play() :
audio[0].play()
})
});
};
</script>
<script>//refresh playlist
function refresh_playlist(refreshplaylist) {
$('#audiodiv').empty();
$.ajax({
url:'ajax/refresh_pl.php',
type:'POST',
cash: false,
data: {'pl' : pl},
dataType: 'html',
success: function(data) {
$('#audiodiv').html(data);
nextsong();
}
});
}
</script>
→ Ссылка
Доброго времени суток друзья. Решил создать аудио-альбом, с плейлистами (php+Mysql) ну и... ajax знаю как отправлять-принимать запросы, обновлять див. При создании нашел скриптец запрещающий воспроизведение сразу нескольких аудиозаписей, а так же начинающий следующую дорожку по завершении текущей. (вывожу их просто тегами ).
Всё было хорошо до тех самых пор пока не начал придумывать, внедрять плейлисты. Столкнулся с проблемой которую решить не смог.
Этот волшебный скрипт при обновлении блока
<div id="audiodiv">..тут и выводятся аудио.. </div> прекращает свою работу.
страничка выглядит вот таким образом:
(кнопочка плейлиста onklick="audiorefresh")(кнопочка плейлиста onklick="audiorefresh")
<div id="audiodiv">
SQLзапрос, далее циклом вывожу аудиозаписи и выглядят они так:
<div>
<div> Название песенки </div>
<audio>
</div>
<div>
<div> Название песенки </div>
<audio>
</div>
<div>
<div> Название песенки </div>
<audio>
</div>
</div>
Далее волшебный скрипт:
<script><?php //Для того, что бы нельзя было запустить несколько песен одновременно ?>
let audioNL = document.querySelectorAll('audio');
let audio = Array.apply(null, audioNL);
audio.forEach(t => {
let index = audio.indexOf(t);
t.addEventListener('play', ()=> {
audio.forEach(subT => {
subT !== audio[index] ?
(subT.pause(), subT.currentTime = 0) :
subT.play()
})
})
t.addEventListener('ended', ()=> {
t.currentTime = 0;
index !== audio.length - 1 ?
audio[index + 1].play() :
audio[0].play()
})
});
</script>
и аджакс получающий значения кнопок плейлистов и передающий эти значения моему скрипту php, так же получающий их и пишущий в этот самый #audiodiv
<script>//refresh playlist
function refresh_playlist(pl) {
$('#audiodiv').empty();
$.ajax({
url:'ajax/refreshpl.php',
type:'POST',
cash: false,
data: {'pl' : pl},
dataType: 'html',
success: function(data) {
$('#audiodiv').html(data);
}
});
}
</script>
Вычитал и про Mutation Observer тоже. Пробовал посадить данный волшебный скрипт на него. Но в общем и целом все мои попытки оказались напрасными. Я с ним никогда не работал может писал что не правильно. Или может кроме jQuery библиотеки ещё что-либо требовалось подключить. В общем зашел в тупик. Не могу решить задачу. Прошу помощи советом, примером.
Ответы (1 шт):
Всё заработало, благодаря Stepan Kasyanenko (в комментариях под вопросом). Сделал всё, как написал. код выглядит так:
<script><?php //Для того, что бы нельзя было запустить несколько песен одновременно ?>
function nextsong(){
let audioNL = document.querySelectorAll('audio');
let audio = Array.apply(null, audioNL);
audio.forEach(t => {
let index = audio.indexOf(t);
t.addEventListener('play', ()=> {
audio.forEach(subT => {
subT !== audio[index] ?
(subT.pause(), subT.currentTime = 0) :
subT.play()
})
})
t.addEventListener('ended', ()=> {
t.currentTime = 0;
index !== audio.length - 1 ?
audio[index + 1].play() :
audio[0].play()
})
});
};
</script>
<script>//refresh playlist
function refresh_playlist(refreshplaylist) {
$('#audiodiv').empty();
$.ajax({
url:'ajax/refresh_pl.php',
type:'POST',
cash: false,
data: {'pl' : pl},
dataType: 'html',
success: function(data) {
$('#audiodiv').html(data);
nextsong();
}
});
}
</script>