查看MDN文档,IOS / Safari完全支持ServiceWorkerGlobalScope.onfetch
,但是当您查看FetchEvent
规范时,它表示Safari完全不支持。
特别是,我想为每个客户端存储一些状态,并希望使用事件的fetchEvent.clientId
属性对其进行索引。当然,我想我也可以访问fetchEvent.request
对象,否则我将看不到服务工作者如何做任何有用的事情,并且可以从URL中传入的参数模拟clientID。但是文档并没有真正告诉我IOS / Safari支持什么,也不支持我,所以我不知道该走哪条路。
有人可以告诉我IOS / Safari在调用已定义的onfetch函数时通过了什么。
FetchEvent.clientID
存在,但字符串长度为零。碰巧的是,我使用Chrome在Linux桌面上执行了相同的操作,并且字符串长度也为零,但它具有另一个参数resultingClientId
,其中看起来像UUID。 Safari中没有该参数。
FetchEvent.request
在这里,尤其是URL。因此,我可以在客户端中生成自己的客户端ID(我正在使用Date.now().toString()
,因为它足以满足我的目的),以便在服务工作者中使用。实际上,我没有服务人员的网站已经在需要拦截的URL中使用,因此,我很高兴有解决方案。