MS Edge блокирует выполнение скрипта, когда браузер свернут - PullRequest
0 голосов
/ 08 мая 2019

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

Кажется, есть определенные ситуации, когда MS Edge приостанавливает \ блокирует выполнение JS. До сих пор мне удавалось надежно воспроизвести его, если я закрою все окна Edge, а затем открою одно окно Edge в развернутом виде с загруженной страницей. Я позволил своему коду работать в течение минуты, затем свернул окно Edge и развернул другое окно. В этот момент мой javascript перестает работать, пока я не верну окно Edge обратно.

Я создал простой пример, используя setInterval и записывая время. В этом примере, после того как вы свернете, подождите некоторое время, затем развернитесь, вы увидите большой скачок во временных метках, где JS не выполнялся. https://jsfiddle.net/9vbs7rkh/

const outDiv = document.querySelector('#out');
const log = (msg) => outDiv.innerHTML =`<p>${new Date()}: ${msg}</p>${outDiv.innerHTML}`;
log("start");
setInterval(() => log("test"), 10000);

Как ни странно, если вы откроете консоль Dev Tools на странице JSFiddle, проблема перестанет появляться на всех вкладках, и я не могу повторно вызвать проблему, пока я не закрою все окна Edge и не начну заново.

1) Это документированное поведение для MS Edge?

2) Есть ли способ избежать этого, чтобы пользователи не вышли из системы, если они свернули браузер на короткое время?

...