Может кто-нибудь уточнить IOS Служба поддержки Safari Service Worker - PullRequest
0 голосов
/ 07 апреля 2020

Глядя на документацию по MDN, IOS / Safari полностью поддерживает ServiceWorkerGlobalScope.onfetch, но когда вы смотрите на спецификацию FetchEvent, он говорит, что Safari вообще не поддерживает.

В частности, я бы хотел сохранить некоторое состояние для каждого клиента и надеялся использовать свойство fetchEvent.clientId события для его индексации. Конечно, я предполагаю, что у меня также есть доступ к объекту fetchEvent.request, в противном случае я не вижу, как работник службы может сделать что-нибудь полезное, и я мог бы смоделировать clientID из переданного параметра в URL. Но документы на самом деле не говорят мне, что поддерживает IOS / Safari, и нет, поэтому я не знаю, какой путь к go.

Может кто-нибудь, пожалуйста, скажите мне точно, что проходит IOS / Safari, когда он вызывает определенную функцию onfetch.

1 Ответ

0 голосов
/ 07 апреля 2020

Я нашел ответ на свой вопрос, используя https://jakearchibald.github.io/isserviceworkerready/demos/fetchevent/

, подключив мой iPad к моему Macbook и отладив мой iPad. В конце концов мне удалось открыть веб-инспектор для работника службы для этой страницы, и console.log показал, что событие передано.

FetchEvent.clientID присутствует, но строка нулевой длины. Как это случилось, я сделал то же самое на моем (linux) рабочем столе, используя Chrome и его строку нулевой длины, НО у него есть еще один параметр resultingClientId с тем, что в нем выглядит как UUID. Этот параметр отсутствует в Safari.

Имеется FetchEvent.request, в частности URL-адрес. Таким образом, я могу сгенерировать свой собственный идентификатор клиента в клиенте (я использую Date.now().toString(), так как этого достаточно для моих целей) для использования служащим. На самом деле мой сайт без работника сервиса использовал URL-адреса, которые мне уже нужно перехватить, поэтому я рад, что у меня есть решение.

...