最小化浏览器时,MS Edge阻止脚本执行

时间:2019-05-07 22:25:33

标签: javascript websocket microsoft-edge

我正在运行一个STOMP Web套接字,该套接字使用setInterval将ping发送到服务器。 ping使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);

奇怪的是,如果您在JSFiddle页面上打开Dev Tools控制台,该问题将在所有选项卡上停止发生,直到关闭所有Edge窗口并重新开始,我似乎无法重新触发该问题。

1)这是MS Edge的已记录行为吗?

2)是否有变通办法来防止这种情况发生,以便用户在短时间内最小化浏览器时不会注销?

0 个答案:

没有答案