Как воспроизвести зацикленный звук в неактивной вкладке?
Мне необходимо воспроизводить звуковой файл через небольшие промежутки времени. Для этого изначально я вызывал функцию с помощью requestAnimationFrame. Но если переключится на другую вкладку браузера, то в хроме звук пропадает вообще, а в firefox сильно увеличивается интервал. Из документации я узнал, что браузеры так экономят ресурсы, снижая fps к минимуму.
Решил переделать с использованием setInterval. В хроме теперь работает как и задумывал, а в firefox ничего особо не поменялось. Какие есть варианты?
Если используете элемент аудио, то для циклического воспроизведения больше всего подходит атрибут loop внутри тега: <audio src='sound.mp3' controls loop></audio>
Работает железно во всех браузерах и случаях. А вот requestAnimationFrame() не рекимендую применять, так как в случае, если попытка воспроизвести вызывает ошибку, (на пример, по ходу загрузки страницы) то эта ошибка будет одна и та же появляться в консоли с офигенной частотой, страница может повиснуть.
Дело в том, что у меня вызов воспроизведения файла происходит через разные промежутки времени и одиночный тег audio тут никак не справится, если не ошибаюсь
Тогда хочу уточнить - вызываться звук может в любой момент, но он должен быть зацикленным, пока не нажмут на паузу? Если да, то при каждом вызове лучше создавать новый элемент аудио с помощью JS.
Не зацикленный. Сейчас я понял, что неправильно назвал тему.
Есть звуковой файл по типу щелчка мыши. Иногда он вызывается скажем 10 раз за секунду, иногда раз в несколько секунд. Значение между вызовами динамическое.
Я проверил в Firefox вариант с setInterval(). Переключение на другую вкладку с периодом 5 секунд роли не играет. А какая минимальная частота повторения используется у Вас? И ещё - если период повторения может оказаться короче, чем продолжительность аудиофайла, то перед play() нужно обнулять временную позицию воспроизведения, заставляя звук проигрываться сначала: