Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.08.2021, 09:45
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

бажит setTimeout в неактивной вкладке в Chrome
Приветствую.
Мне рапортуют баг в моем приложении, но сам я его не могу повторить, речь идет о Chrome на виндовс.
Стоит обычный код, через 5 минут проверка на "неактивность":
setTimeout(check, 300000);

, но у них получается он :
- открывает форму, отсчет пошел.
- переходит на другие вкладки
- эта проверка происходит в реалии только через 8 минут

Гуглил про какие то оптимизации в неактивных вкладках, когда setInterval на 1 сек переводится,
но чтобы такое...

Встречали и как такое фиксить?
Может банально можно таймер установить работать правильно?
Ответить с цитированием
  #2 (permalink)  
Старый 27.08.2021, 10:10
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

С Chrome 88+ интервал увеличивается до 1 мин, если вкладка неактивна больше 5 мин.
https://usefulangle.com/web-updates/...imers-1-minute
https://developer.chrome.com/blog/ti...-in-chrome-88/

Последний раз редактировалось voraa, 27.08.2021 в 10:17.
Ответить с цитированием
  #3 (permalink)  
Старый 27.08.2021, 10:23
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

Ну у меня вроде ж как и не интервал это.
Неужто оно как то прибавляет к моему еще что то за неактивность?
Ответить с цитированием
  #4 (permalink)  
Старый 27.08.2021, 11:27
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Он вообще может отрубить все интервалы и таймауты на неактивной вкладке.

Был хак для сохранения вкладки активной - проигрывание тишины в audio. Но теперь он не поможет, т.к. автозапуск аудио запретили(правильно сделали, впрочем).

Как сейчас с этим справляются - хз, я не трогаю неактивные вкладки.)

P.S. setTimeout в любом случае ничего не гарантирует. Указанное время задержки означает "не раньше чем".
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 27.08.2021, 13:51
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

Буду наверное сам считать метки времени и разницу, реально прошедшую.
Странно выглядит "замирание" страницы при неактивной вкладке.
В современном SPA приложении( у меня не оно), которое типа как обычное приложение винды, уж точно.
Ответить с цитированием
  #6 (permalink)  
Старый 27.08.2021, 15:15
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

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

Особенно кстати тут отличаются spa, а конкретнее react.)
__________________
29375, 35

Последний раз редактировалось Aetae, 27.08.2021 в 15:21.
Ответить с цитированием
  #7 (permalink)  
Старый 27.08.2021, 15:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Aetae,
не подскажешь а requestAnimationFrame тоже засыпает? если нет, может на нём таймер сделать?
Ответить с цитированием
  #8 (permalink)  
Старый 27.08.2021, 16:02
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

рони, он вообще останавливается. requestAnimationFrame(callback) - это по сути addEventListener('отрисовка фрейма', callback, { once: true }).
Если вкладка скрыта - там ничего не рисуется.)
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 27.08.2021, 16:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Aetae,
Ответить с цитированием
  #10 (permalink)  
Старый 28.08.2021, 02:17
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Воркеры и WASM модули не засыпают но очень много ресурсов потребляют.
Можно переопределить setTimeout завернув его в воркер
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клик мышкой в неактивной вкладке mozhunt Opera, Safari и др. 10 28.06.2018 18:37
Расширение Google Chrome событие загрузки страницы на вкладке grigandal Javascript под браузер 3 18.02.2018 23:34
выполнение скрипта в неактивной вкладке parampam23 Events/DOM/Window 11 26.01.2018 11:59
Проблема с setTimeout при первой загрузке в Chrome slobodchuk jQuery 1 17.02.2012 02:16
Открыть сылку в новой неактивной вкладке vah-smile Элементы интерфейса 5 14.08.2011 20:22