Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2019, 12:11
Кандидат Javascript-наук
Отправить личное сообщение для Lefseq Посмотреть профиль Найти все сообщения от Lefseq
 
Регистрация: 19.04.2019
Сообщений: 124

Воспроизведение музыки на сайте с прерванного места
Здравствуйте.

Возможно ли выполнить следующую задачу?

При заходе на страницу example.html начинает играть мелодия, но если страницу обновить мелодия начинает играть с самого начала, возможно ли сделать, чтобы после обновления страницы мелодия начинала звучать с прерванного места?
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2019, 16:59
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Lefseq
При заходе на страницу example.html начинает играть мелодия, но если страницу обновить мелодия начинает играть с самого начала, возможно ли сделать, чтобы после обновления страницы мелодия начинала звучать с прерванного места?
Да, надо запомнить время, и при загрузке восстановить его! Этот способ требует добавления уникального id ко всем аудио...
<audio id="my-audio" src="audio.mp3" controls autoplay></audio>
<script>
	addEventListener("beforeunload", function(event) {
		localStorage.audioLastTimes = JSON.stringify(Array.from(document.querySelectorAll("audio[id]"))
		.reduce(function(data, audio) {
			data[audio.id] = audio.currentTime % audio.duration;

			return data;
		}, {}));
	});

	if("audioLastTimes" in localStorage) {
		Object.entries(JSON.parse(localStorage.audioLastTimes)).forEach(function(pair) {
			var audio = document.getElementById(pair[0]);
			if(!audio) return;
			audio.currentTime = pair[1];
		});
	}
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2019, 17:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Lefseq,
не самый рациональный, но возможный вариант.
let audio = document.querySelector("audio");
let currentTime = Number(localStorage.audioTime||0);
audio.currentTime = currentTime;
let loop = ()=> {
localStorage.audioTime = audio.currentTime;
requestAnimationFrame(loop);
}
requestAnimationFrame(loop)
//audio.play()
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2019, 18:00
Кандидат Javascript-наук
Отправить личное сообщение для Lefseq Посмотреть профиль Найти все сообщения от Lefseq
 
Регистрация: 19.04.2019
Сообщений: 124

Malleys,
Мне нужно чтобы без плеера на странице, просто фоновая музыка
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2019, 18:03
Кандидат Javascript-наук
Отправить личное сообщение для Lefseq Посмотреть профиль Найти все сообщения от Lefseq
 
Регистрация: 19.04.2019
Сообщений: 124

рони,
А где тут ссылку на песню прописать? Только мне нужно чтобы музыка звучала без наличия плеера на странице, просто фоном. Подскажите пожалуйста.
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2019, 18:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Lefseq
А где тут ссылку на песню прописать?
как создать автовоспроизведение не знаю.
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2019, 21:02
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Lefseq
Мне нужно чтобы без плеера на странице, просто фоновая музыка
Так удалите атрибут controls

Если у вас предполагается проигрывание всё время одного файла, то можно и так...
<script>

(function() {
	var audio = new Audio();
	audio.src = "audio.mp3";
	audio.currentTime = "audioLastTime" in localStorage ? localStorage.audioLastTime : 0;
	audio.loop = true;
	audio.play();

	addEventListener("beforeunload", function(event) {
		localStorage.audioLastTime = audio.currentTime % audio.duration;
	});
})();

</script>


Сообщение от рони
не самый рациональный, но возможный вариант.
Это вообще бессмысленно, оно ничего не рисует (и тем более, если переключиться на другую вкладку, то requestAnimationFrame не будет вызываться!)

Последний раз редактировалось Malleys, 07.07.2019 в 22:02.
Ответить с цитированием
  #8 (permalink)  
Старый 07.07.2019, 21:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Malleys,
как заставить работать этот параметр autoplay или audio.play()?
браузеры против.
Ответить с цитированием
  #9 (permalink)  
Старый 08.07.2019, 04:26
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от рони
как заставить работать этот параметр autoplay или audio.play()?
В спецификации HTML5 написано, что когда у аудио-элемента представлен атрибут autoplay, то браузер автоматически начнёт проигрывание аудио-ресурса с того момента, как только он сможет проигрывать без прерывании.

В новых версиях Google Chrome запуск программного проигрывания возможно только в том случае, если пользователь уже взаимодействовал со страницей. Это было сделано с целью предотвратить шумные вкладки.

Если запустить Google Chrome c аргументом --autoplay-policy=no-user-gesture-required, то оно работает так, как описано в спецификации
Код:
chrome --autoplay-policy=no-user-gesture-required
Ответить с цитированием
  #10 (permalink)  
Старый 08.07.2019, 08:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Malleys
Если запустить Google Chrome c аргументом
спасибо за вариант, но
Firefox тоже не хочет воспроизводить, для клиента добавлять аргументы на запуск, наверно не выход.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Воспроизведение видео на сайте по расписанию. Grasss Общие вопросы Javascript 20 06.11.2017 20:54
Как сделать идентификацию музыки на сайте hipperman Общие вопросы Javascript 13 28.07.2016 11:48
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
кнопка для музыки на сайте Alexander_Boyarskiy Flash 1 29.11.2011 21:40
воспроизведение музыки AntiBuger Events/DOM/Window 2 02.09.2011 23:40