Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Опять аудио! Музыка фоном, КАК ??? (https://javascript.ru/forum/dom-window/81002-opyat-audio-muzyka-fonom-kak.html)

MaxMaxFriend 11.09.2020 12:34

Опять аудио! Музыка фоном, КАК ???
 
Добрый день Асам по JS !!!
Cо криптами я новичок ! И нужно, поскольку столкнулся по работе...
Не понимаю, что не так в коде по случ.выбору музыки, которая должна звучать фоном при открытии страницы...
Выбор в switch выполняется... О чем свидетельствует отладочный - alert (x) Отдельно, вне скрипта :
<audio src="https://drivemusic.me/dl/AWkaaH9xtZJtrs38TMfQLg/1599767898/download_music/2016/02/keiko-matsui-forever-forever.mp3" autoplay></audio>
работает !!!
А по выбору - нет ??? :-/ Помогите решить задачку, плиз... :thanks:
Привожу код:

<html>
<body>
<script>
switch (Math.floor(Math.random() * 3) + 1) {// Один из 3х
case 1:
x="https://drivemusic.me/dl/AWkaaH9xtZJtrs38TMfQLg/1599767898/download_music/2016/02/keiko-matsui-forever-forever.mp3";
break;
case 2:
x="https://drivemusic.me/dl/b1Uf_3jG11wbPk6VN39aKA/1599698135/download_music/2014/06/parallels-beachflow.mp3";
break;
case 3:
x="https://drivemusic.me/dl/LYGwhcbsvxWYFthXC-ahSw/1599698369/download_music/2013/04/central-lounge-before-closing.mp3";
}
alert (x);
//<audio src=x autoplay></audio>
</script>
</body>
</html>

voraa 11.09.2020 13:53

Сейчас браузеры блокируют автовоспроизведение audio, независимо от того стоит там autoplay или программно вызывается функция play() без предварительных действий пользователя (например, по нажатию кнопки вызывается функция, которая вызывает play())

https://developer.mozilla.org/en-US/...Autoplay_guide

voraa 11.09.2020 15:07

Цитата:

Сообщение от MaxMaxFriend
<audio src=x autoplay></audio>

Это вообще какая то ерунда.
Тогда уж через document.write надо

Вот такой скрипт
<!DOCTYPE html>
<html lang="ru">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body >
<script>
switch (Math.floor(Math.random() * 3) + 1) {// Один из 3х
case 1:
x="https://drivemusic.me/dl/AWkaaH9xtZJtrs38TMfQLg/1599767898/download_music/2016/02/keiko-matsui-forever-forever.mp3";
break;
case 2:
x="https://drivemusic.me/dl/b1Uf_3jG11wbPk6VN39aKA/1599698135/download_music/2014/06/parallels-beachflow.mp3";
break;
case 3:
x="https://drivemusic.me/dl/LYGwhcbsvxWYFthXC-ahSw/1599698369/download_music/2013/04/central-lounge-before-closing.mp3";
}
document.write(`<div>${x}</div>`)
document.write(`<audio id='au' src="${x}" autoplay></audio>`)
</script>
<button id='pl'>Play</button>
<script>
document.getElementById('pl').addEventListener('click', ()=>document.getElementById('au').play())
</script>
</body>
</html>


по autoplay не срабатывает. Блокируется.
Только по действию пользователя = нажатию кнопки

MaxMaxFriend 11.09.2020 15:12

Что значит "...браузеры блокируют автовоспроизведение audio"
И Гугл и Яндекс у меня воспроизводит как я у же писал: "Отдельно, вне скрипта".
Запустите строку ниже даже в старом Int Explorer:
<audio src="https://drivemusic.me/dl/AWkaaH9xtZJtrs38TMfQLg/1599767898/download_music/2016/02/keiko-matsui-forever-forever.mp3" autoplay></audio>
и убедитесь, как НЕ РАБОТАЕТ !????
А вот в скрипте, УВЫ !

MaxMaxFriend 11.09.2020 15:22

По кнопке - уже ближе. Но это не то.... :nono: Может по одному из событий:
window.onload = function()
или
<body onload="function()">
:-?

voraa 12.09.2020 22:25

Цитата:

Сообщение от MaxMaxFriend
И Гугл и Яндекс у меня воспроизводит как я у же писал: "Отдельно, вне скрипта".
Запустите строку ниже даже в старом Int Explorer:

Я не понимаю, что такое "запустить строку".
Я знаю, как запустить на странице. Вне скрипта.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>audio</title>
</head>
<body>
<audio src="https://drivemusic.me/dl/AWkaaH9xtZJtrs38TMfQLg/1599767898/download_music/2016/02/keiko-matsui-forever-forever.mp3" autoplay></audio>
</body>
</html>


Блокируется.

MaxMaxFriend 14.09.2020 06:56

Многоуважаемый "voraa" - Профессор форума !
"запустить строку" - имеется такая терминология... значит
выполнить код, который без среды воспроизведения (в нашем случае любого браузера, как интерпретатора языка НТТP - языка протокола гипертекст.разметок) - прото строка, "дрова", если хотите...
Набрав в простом блокноте лишь один тег:
<audio src="...."></audio>
а затем переименовав файл с ним в тип: .htm выполнить, запустить даже в Int Explorer
и без вступительных:

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>audio</title>
</head>
<body>

РАБОТАЕТ для тестирования- ЕЩЕ КАК !!!

Жалко, что не получил нужного ответа :cray:
Решить такой простенький пример по программному выбору музыки - смешно...
И это есть - великий и могучий Java Script ?????

voraa 14.09.2020 07:34

Цитата:

Сообщение от MaxMaxFriend
Набрав в простом блокноте лишь один тег:
<audio src="...."></audio>
а затем переименовав файл с ним в тип: .htm выполнить, запустить даже в Int Explorer
и без вступительных:

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>audio</title>
</head>
<body>

Но реально то так не бывает.
Реально - есть страница со всеми заголовками.
И на этой реальной странице современные браузеры (про ИЕ не знаю, давно не приходится ориентироваться на него), начиная с каких то версий стали блокировать автовоспроизведение аудио (и воспроизведение по play() без явных действий пользователя). Когда это стало происходить нам тоже пришлось бросить одну работу, т.к не могли справиться с этим.
Наверно это правильно. Представьте, что все подряд начнут ставить фоновые вопли и шумы на свои страницы без всякого предупреждения.
И мы вынуждены будем все это слушать

MaxMaxFriend 14.09.2020 08:16

Я к тому, что вписывать обязательные теги для воспроиз. 1-го не неужно, а то, что интерпретатор обрамляет всем необходимым - это ясно !
На счет музыки. Кому не по душе Релакс или грубее достаточно заглушить динамики на панеле задач или https://javascript.ru/forum/attachme...d=160005957 7
во вкладке страницы...

Соглашусь с одним - эта политика скорее для конфиденциального просмотра страниц (не спалиться звуками при просмотре контента !!!)

Но, Но и но: У меня музыка при открытии страницы автоматом, то бишь autoplay срабатывает, играет. А вот как выбрать ?????

voraa 14.09.2020 08:32

Цитата:

Сообщение от MaxMaxFriend
Я к тому, что вписывать обязательные теги для воспроиз. 1-го не неужно, а то, что интерпретатор обрамляет всем необходимым - это ясно !

<audio src="https://drivemusic.me/dl/AWkaaH9xtZJtrs38TMfQLg/1599767898/download_music/2016/02/keiko-matsui-forever-forever.mp3" autoplay></audio>


Играет?
Цитата:

Сообщение от MaxMaxFriend
Но, Но и но: У меня музыка при открытии страницы автоматом, то бишь autoplay срабатывает, играет. А вот как выбрать ?????

Приведите тут свой пример, где срабатывает автоплей

Цитата:

Сообщение от MaxMaxFriend
На счет музыки. Кому не по душе Релакс или грубее достаточно заглушить динамики на панеле задач или
во вкладке страницы...

Это совсем неправильно. Нельзя заставлять пользователя совершать лишние телодвижения, что бы от чего то отказаться. Пользователь должен осознанно что то сделать, что бы получить что то.
Это как устанавливать платную подписку не спрашивая согласия. Типа, если не нужно откажись. Но деньги за первоначальную установку спишем.

voraa 14.09.2020 08:46

Цитата:

Сообщение от MaxMaxFriend
Набрав в простом блокноте лишь один тег:
<audio src="...."></audio>
а затем переименовав файл с ним в тип: .htm

Т.е это запускается локально, с компьютера?
Правила обработки страниц, полученных по протоколу file: и протоколам htpp(s) могут отличаться.
Вот правила блокировки автовоспроизведения в общем виде

Цитата:

Как правило, вы можете предположить, что автозапуск мультимедиа будет разрешен только при выполнении хотя бы одного из следующих условий:

Звук отключен или его громкость установлена ​​на 0

Пользователь взаимодействовал с сайтом (щелкая, касаясь, нажимая клавиши и т. Д.)

Если сайт внесен в белый список; это может происходить либо автоматически, если браузер определяет, что пользователь часто взаимодействует с мультимедиа, либо вручную с помощью настроек или других функций пользовательского интерфейса.

Если политика функции автовоспроизведения используется для предоставления поддержки автовоспроизведения для файла <iframe>и его документа.

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

MaxMaxFriend 14.09.2020 09:50

Спорный вопрос на счет запретов аudio ?!!!
 
"Это как устанавливать платную подписку не спрашивая согласия. Типа, если не нужно откажись." - нелепое сравнение. :agree: Это не денежный вопрос !
Вообщем, когда квалификации не достаточно, в ход ступает треп...
Вот на другом форуме, моя проблемка была решена на 5 минут !

https://www.cyberforum.ru/javascript...ad2698036.html

Что ж, удачи.
P.S.: Век живи, век - учись !

voraa 14.09.2020 10:11

Отпишитесь, у кого это работает и на каком браузере
<html>
<body>
<audio id='audio_player' src=x autoplay></audio>
<script>
const links = [
  "https://drivemusic.me/dl/AWkaaH9xtZJtrs38TMfQLg/1599767898/download_music/2016/02/keiko-matsui-forever-forever.mp3",
  "https://drivemusic.me/dl/b1Uf_3jG11wbPk6VN39aKA/1599698135/download_music/2014/06/parallels-beachflow.mp3",
  "https://drivemusic.me/dl/LYGwhcbsvxWYFthXC-ahSw/1599698369/download_music/2013/04/central-lounge-before-closing.mp3"
]
const id = Math.floor(Math.random() * 3);
const link = links[id];
const player = document.getElementById('audio_player');
player.src = link;
</script>
</body>
</html>


У меня хром молчит.
Лис играет при воспроизведении во фрейме (с форума), но молчит при открытии непосредственно страницы (и с сервера и локально) с предупреждением
Цитата:

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


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