var source = new EventSource("YOUR_SSE_ENDPOINT");
source.onmessage = function(event) {};
source.onerror = function() {
source.close();
console.log("Reload the page after 10 seconds because of network error");
setTimeout(function(){
location.reload();
}, 10*1000);
};
1条答案
按热度按时间d6kp6zgx1#
这个问题的一个可能的解决方法是创建一个永不结束的请求,比如SSE请求,然后检测错误(如果你真的需要一个全局监听器)。
这个例子只有在你想在网络错误发生时重新加载页面时才真正有用。似乎没有一个全局错误侦听器可以用于这类错误,但是你也可以将其应用于对服务器的特定短请求(如加载图像)。只需在你的特定(而不是全局)请求上注册一个错误处理程序。
Javascript SSE示例
在这种情况下,重新加载页面就足够了。当我打开或关闭VPN连接时,
net :: ERR_NETWORK_CHANGED
错误发生在我的案例中。我只想在此之后重新加载页面。HTML5 / Javascript图像示例
正如我所说的,它还可以处理其他特定的请求,比如图像:
你应该知道它不会过滤错误类型,所以当你的图片网址出现404错误时,它会重新加载页面,这可能不是你想要的。
尝试重新加载图像
另一个用例是尝试并重新加载镜像5次,在此期间,网络可以恢复并加载镜像,或者如果没有(或者镜像返回404),它将在5次后停止。