Блокировка JavaScript на неактивной вкладке Chrome Chrome

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

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

Я предполагаю, что это связано с тем, что Chrome приостанавливает выполнение JavaScript для неактивной вкладки, но я не хочу, чтобы мой экран все время играл музыку.

Я отлаживал код с помощью отладчика мобильных устройств Chrome, устанавливая тайм-аут для запуска каждые 500 мс, который показывает только текущую дату. Как только экран станет черным, тайм-аут упадет до одного раза в 1000 мс, что ожидается, но через несколько минут тайм-аут прекратится вообще. Но как только вкладка активна снова, все приостановленные таймауты активируются и запускаются.

Ожидается и будет учтено изменение Chrome setInterval/setTimeout до 1000 мс, но приостановка выполнения полностью заставляет мою страницу перестать работать.

Я попытался сделать так, чтобы активная вкладка выполняла запросы AJAX так часто, но они также приостанавливаются. Ничего, что я пробовал, не позволяет запустить JavaScript.

В принципе, есть ли способ обойти это? Есть ли способ сохранить вкладку активным, когда экран выключен?

Ответ 1

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

У нас есть возможность держать музыку и звук в фоновом режиме (когда экран выключен), но вы не можете перейти к следующему треку, как вам нужно.

Ответ 2

пожалуйста, у меня также есть та же проблема, вы нашли решение?