Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Проблема с onended для chrome (https://javascript.ru/forum/events/28446-problema-s-onended-dlya-chrome.html)

С.Тарасов 20.05.2012 18:50

Цитата:

Сообщение от vadim5june
ну я вот здесь сделал вроде работает посмотрите
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 начал реагировать, но нарушается последовательный порядок воспроизведения.

vadim5june 20.05.2012 18:55

ну я там всего 2 песни включил поэтому у меня там это сейчас не проверишь -завтра закину больше и сделаю плей лист-я уже давно хотел занятся

С.Тарасов 21.05.2012 17:22

Сделал, то что хотел. Теперь работает и в 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 тоже получается бред.

vadim5june 21.05.2012 18:41

Цитата:

Сообщение от С.Тарасов (Сообщение 175773)
Также заметил, что если открыты в один момент две вкладки с плеерами, то в Chrome тоже получается бред.

Я там добавил несколько песен и в хроме нормально играет-но кроссбраузерного варианта нет-посмотрю Ваш
попробовал в 2 вкладках-оба играют независимо друг от друга-нужно подумать как сделать чтобы 2 вкладки нельзя было открыть-хотя эту проблему можно игнорировать как экзотическую

С.Тарасов 21.05.2012 18:55

Цитата:

Сообщение от vadim5june (Сообщение 175788)
хотя эту проблему можно игнорировать как экзотическую

И я так думаю.

Тем более, что похоже это только у меня такая ерунда. Но решать её пока мне незачем. И так сойдёт :).


Часовой пояс GMT +3, время: 07:24.