Проблема с 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, время: 16:36. |