Имитация нажатия на кнопку в audio controls.
Всем привет. Есть audio controls для воспроизведения музыки.
<audio controls class="muz"> <source src="music/1.mp3" type="audio/ogg" /> Есть ли возможность с помощью JS имитировать нажатие на кнопку для начала воспроизведения музыки сразу после загрузки страницы? Знаю раньше была такая возможность, сейчас в браузере это отменили. Обойти этот запрет можно? Всем спасибо за участие. |
Цитата:
Вам дай волю - вы достанете этими звуками и видосами... |
Юзер если захочет может разрешить автозапуск для твоего сайта(слева у адресной строки кнопочка). А если не захочет - то и не надо.
|
Да мне это надо не для сайта в интернете, а для автономной страницы. Пусть будет не audio controls, а простая обычная кнопка.
|
III, на локальной странице в FF ты точно также можешь разрешить автовоспроизведение. В хроме увы нет.
Простая обычная кнопка кликается button.click(). Но аудио это тебе не воспроизведёт.:) |
Спасибо, всё стало понятно. Значит программное нажатие на кнопку тут не сработает.
|
Снова здравствуйте. Хотелось бы уточнить ещё такой вопрос по этой теме.
Речь опять же об автономной форме. Если сделать дополнительно страницу HTML в папке где основная страница, поместить туда кнопку, которая будет перенаправлять на основную страницу, примерно так <button id="button"> <i class="fas fa-volume-up"></i> </button> <button onclick="window.open('ДР.html','_self');">. В этой новой странице, от этой же кнопки включается музыка. Всё остальное выполняется на основной странице. Такой вариант возможен? Если да, то подскажите скрипт как это сделать. Всем спасибо. |
По сути, единственное, что требуется от пользователя - кликнуть по странице, чтобы разрешить проигрывать аудио.
Если очень хочется запустить медиа на странице, то почему не сделать как-то так? <style> .overlay { position: fixed; top: 0; right: 0; bottom: 0; left: 0; margin: auto; display: flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, .7); z-index: 1; } </style> <div class="overlay"> <button type="button" disabled> Loading... </button> </div> <button type="button" data-role="play-pause-button"> Pause </button> <script> document.addEventListener('DOMContentLoaded', () => { const audio = new Audio(); const play = () => { audio.play().catch(e => { alert(e.message); }); }; audio.addEventListener('canplaythrough', () => { const button = document.querySelector('.overlay button'); if (!button) { return; } button.textContent = 'Start'; button.disabled = false; button.addEventListener('click', () => { document.querySelector('.overlay')?.remove(); audio.muted = false; audio.loop = true; audio.volume = 1;// 0..1 play(); }, {once: true}); }); audio.addEventListener('error', () => { alert(audio.error?.message ?? 'Something went wrong'); }); audio.src = 'https://mp3bob.ru/download/muz/Rick_Astley_-_Never_Gonna_Give_You_Up_[www.mp3pulse.ru].mp3'; document.querySelector('[data-role="play-pause-button"]')?.addEventListener('click', e => { const button = e.target; if (audio.paused) { button.textContent = 'Pause'; play(); } else { button.textContent = 'Play'; audio.pause(); } }); }); </script> |
Это практически тоже самое, что и нажать кнопку на audio controls. Мне надо, чтобы пользователь нажал один раз где-нибудь кнопку в результате всё заработало, страница открылась, музыка играет и все действия на странице выполняются согласно сценария. У меня страница сделана пипа открытки, хочется сделать так, чтобы пользователь не делал лишних манипуляций. Важно чтобы воспроизведение музыку начиналась сразу после открытия страницы.
|
Что-то я не догоняю, в чем разница между кнопкой на целевой странице и кнопкой на первой странице, которая будет открывать вторую?
Что там кнопка, что там. Единственное отличие в том, что первый вариант позволит проигрывать аудио, а второй - нет. В любом случае, ваша задача не решаема способом, на котором вы настаиваете. |
Часовой пояс GMT +3, время: 14:09. |