JavaScript或ServiceWorkers能否检测网络活动/Ajax事件?

JavaScript或ServiceWorkers能否检测网络活动/Ajax事件?,javascript,ajax,httprequest,Javascript,Ajax,Httprequest,ServiceWorker(或其他机制)是否有办法检测何时下载资源 例如,如果发生以下任何情况,我希望得到通知: 下载 背景图像中的资源:url(…)下载 样式表遇到@import,正在获取资源 下载 某些脚本调用新的XMLHTTPRequest或fetch 简而言之,JavaScript是否提供了监听网络活动的方法 这和相反,是的,这就是服务工作者的全部观点 ServiceWorker的限制(根据规范):您将无法拦截或资源的请求,也无法拦截导航请求。这两种限制都是作为安全措施设计的 我建议

ServiceWorker
(或其他机制)是否有办法检测何时下载资源

例如,如果发生以下任何情况,我希望得到通知:

  • 下载
  • 背景图像中的资源:url(…)
    下载
  • 样式表遇到
    @import
    ,正在获取资源
  • 下载
  • 某些脚本调用新的
    XMLHTTPRequest
    fetch
简而言之,JavaScript是否提供了监听网络活动的方法


这和

相反,是的,这就是服务工作者的全部观点

ServiceWorker的限制(根据规范):您将无法拦截
资源的请求,也无法拦截导航请求。这两种限制都是作为安全措施设计的


我建议您开始阅读ServiceWorker规范的部分。

是的,ServiceWorker捕获您列出的所有获取事件。向以下人员注册服务人员:

navigator.serviceWorker.register('/service-worker.js');
在service worker脚本中,为
fetch
事件安装处理程序:

// `self` is a ServiceWorkerGlobalScope
self.addEventListener('fetch', function(event) {
  console.log("fetch event:", event.request.url);
});
这里有一个例子来说明这一点。您需要在实时预览中运行演示两次(一次用于注册服务工作者,另一次用于在控制台中查看获取事件)。不要忘记从DevTools中注销服务工作者作为清理:DevTools>Resources/Applications>serviceworks(左面板)>Delete(右)