Проблема с onended для chrome
Добрый день!
Подскажите пожалуйста как правильно написать обработку события onended для Chrome. В моём скрипте на этой странице есть две функции:
function speek(){
var id=id_speeker;
try{
if (speek_off==false || speek_off1==false){
if (sp_paus==false && sp[nfonem]=='001'){
next_sound();
}else{
$(id).autoplay=true;
$(id).src='/pifiya/sound/'+sp[nfonem]+'.wav';
$(id).onerror= function (){err_fonem(0)}
$(id).onended=function(){next_sound()}
}
}
}catch(e){}
}
//-------------------------------------------------------------------------------
function next_sound(){
nfonem++;
if (sp.length==nfonem){
end_speek()
}else{
speek();
}
}
Так вот строка :
$(id).onended=function(){next_sound()}
в chrome работать не хочет, хотя в Opere и Mozzile работает.Пробовал так:
function chrom(){audio.addEventListener('ended', function(){next_sound();}, false);}
тоже ничего.Как это поправить для chrome и заставить его бубнить? :) |
по моему в хроме они исключили возможность запуска из скрипта-только когда пользователь нажимает на play
|
да нет, он начинает проигрывать, как задумано, но после воспроизведения первого файла не начинает воспроизводить следующий.
|
Цитата:
<audio></audio> то есть первый и следующий? |
Нет конечно. Они подгружаются по мере необходимости.
$(id).src='/pifiya/sound/'+sp[nfonem]+'.wav'; id - это тег audio. |
Эта тема меня сейчас сильно интересует поэтому если найдете решение напишите здесь плиз
Попробуйте добавить после next_sound();audio.play() |
Хорошо, если решу напишу это решение.
|
Цитата:
Chrome воспроизводит первый файл и всё, т.е. после окончания воспроизведения не происходит событие onended, а следовательно и его обработка. |
ну я вот здесь сделал вроде работает посмотрите
http://all-html5.narod.ru/2/audio2.htm |
Спасибо. Попробую. Отвечу немного позже.
|
Цитата:
1. Добавил:
function chrom(){$('sp').addEventListener('ended', function(e){next_sound()})}
2. < body onload="chrom()" > 3. из speek() исключил onended chrome начал реагировать, но нарушается последовательный порядок воспроизведения. |
ну я там всего 2 песни включил поэтому у меня там это сейчас не проверишь -завтра закину больше и сделаю плей лист-я уже давно хотел занятся
|
Сделал, то что хотел. Теперь работает и в chrome.
Решение:
<script type="text/javascript">
//-------------------------------------------------------------------------------
// вспомогательные функции
function ie(){if (navigator.appName=='Microsoft Internet Explorer'){return true}else{return false}}
function $(id) {
if (ie()){var idom=document.all(id)}else{var idom=document.getElementById(id)}
return idom;
}
//-------------------------------------------------------------------------------
// функция обработки событий
function chrome(){
$('sp').addEventListener('ended', function(e){next_sound()});
$('sp1').addEventListener('ended', function(e){next_sound()});
//ниже обязательно назначаем обработку события:
// 'canplaythrough' - Скрипт выполняется, когда медиа может быть проиграно до конца,
// без остановок для буферизации
$('sp').addEventListener('canplaythrough', function(e){this.play()});
$('sp1').addEventListener('canplaythrough', function(e){this.play()});
}
//-------------------------------------------------------------------------------
// Воспроизведение очередного файла, название которого находится в массиве sp[nfonem]
//
function speek(){
.................
$(id_speeker).src='sound/'+sp[nfonem]+'.wav';
.................
}
//-------------------------------------------------------------------------------
// переход к воспроизведению следующего файла
function next_sound(){
.........
sp.length==nfonem ? end_speek() : speek();
.........
}
</script>
В HTML: <body onload="chrome()"> ................................ <audio id="sp" type="audio/x-wav" controls autoplay> Тег audio не поддерживается вашим браузером. </audio> ............................... <audio id="sp1" type="audio/x-wav" controls autoplay> Тег audio не поддерживается вашим браузером. </audio> .............................. Т.к. используется два плеера, то для правильно работы в Сhrome, прежде чем запустить другой, в останавливаемом необходимо выполнить: $(id).src=""; иначе опять будет неправильная работа. Также заметил, что если открыты в один момент две вкладки с плеерами, то в Chrome тоже получается бред. |
Цитата:
попробовал в 2 вкладках-оба играют независимо друг от друга-нужно подумать как сделать чтобы 2 вкладки нельзя было открыть-хотя эту проблему можно игнорировать как экзотическую |
Цитата:
Тем более, что похоже это только у меня такая ерунда. Но решать её пока мне незачем. И так сойдёт :). |
| Часовой пояс GMT +3, время: 04:29. |