Service worker ÑакÑиÑеÑки вÑполнÑÐµÑ ÑÐ¾Ð»Ñ Ð¿ÑокÑи-ÑеÑвеÑа, Ð½Ð°Ñ Ð¾Ð´ÑÑегоÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð²ÐµÐ±-пÑиложением и бÑаÑзеÑом, а Ñакже ÑеÑÑÑ (еÑли доÑÑÑпна). Ðн позволÑÐµÑ (кÑоме пÑоÑего) опиÑÑваÑÑ ÐºÐ¾ÑÑекÑное поведение веб-пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² Ñежиме оÑлайн, пеÑÐµÑ Ð²Ð°ÑÑваÑÑ Ð·Ð°Ð¿ÑоÑÑ ÑеÑи и пÑинимаÑÑ ÑооÑвеÑÑÑвÑÑÑие меÑÑ, оÑновÑваÑÑÑ Ð½Ð° доÑÑÑпноÑÑи ÑеÑи, и обновлÑÑÑ Ð´Ð°Ð½Ð½Ñе, Ð½Ð°Ñ Ð¾Ð´ÑÑиеÑÑ Ð½Ð° ÑеÑвеÑе пÑи доÑÑÑпе к немÑ. Также они имеÑÑ Ð´Ð¾ÑÑÑп к push-ÑведомлениÑм и API Ð´Ð»Ñ Ñоновой ÑÐ¸Ð½Ñ ÑонизаÑии.
ÐонÑепÑÐ¸Ñ Ð¸ иÑполÑзование Service WorkerService worker â ÑÑо ÑобÑÑийно-ÑпÑавлÑемÑй worker, ÑегиÑÑÑиÑÑемÑй на ÑÑовне иÑÑоÑника и пÑÑи. Ðн пÑедÑÑавлÑÐµÑ Ñобой JavaScript-Ñайл, коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ ÐºÐ¾Ð½ÑÑолиÑоваÑÑ Ð²ÐµÐ±-ÑÑÑаниÑÑ/ÑайÑ, Ñ ÐºÐ¾ÑоÑÑм он аÑÑоÑииÑÑеÑÑÑ, пеÑÐµÑ Ð²Ð°ÑÑваÑÑ Ð¸ модиÑиÑиÑоваÑÑ Ð·Ð°Ð¿ÑоÑÑ Ð½Ð°Ð²Ð¸Ð³Ð°Ñии и ÑеÑÑÑÑов, оÑÐµÐ½Ñ Ð³Ð¸Ð±ÐºÐ¾ кеÑиÑоваÑÑ ÑеÑÑÑÑÑ, Ð´Ð»Ñ Ñого ÑÑÐ¾Ð±Ñ Ð¿ÑедоÑÑавиÑÑ Ð²Ð°Ð¼ полнÑй конÑÑÐ¾Ð»Ñ Ð½Ð°Ð´ Ñем, как пÑиложение ведÑÑ ÑÐµÐ±Ñ Ð² опÑеделÑннÑÑ ÑиÑÑаÑиÑÑ (напÑимеÑ, когда ÑеÑÑ Ð½Ðµ доÑÑÑпна).
Service worker запÑÑкаеÑÑÑ Ð² конÑекÑÑе воÑкеÑов, поÑÑÐ¾Ð¼Ñ Ð¾Ð½ не Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑпа к DOM и ÑабоÑÐ°ÐµÑ Ð² поÑоке оÑделÑном Ð¾Ñ Ð¾Ñновного поÑока JavaScript, ÑпÑавлÑÑÑего ваÑим пÑиложением, а ÑледоваÑелÑно â не блокиÑÑÐµÑ ÐµÐ³Ð¾. Ðн пÑизван бÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð°ÑÐ¸Ð½Ñ ÑоннÑм; как ÑледÑÑвие, ÑÐ¸Ð½Ñ ÑоннÑе API, Ñакие как XHR и localStorage, в Service Worker'е иÑполÑзоваÑÑ Ð½ÐµÐ»ÑзÑ.
Ðз ÑообÑажений безопаÑноÑÑи service worker'Ñ ÑабоÑаÑÑ ÑолÑко по HTTPS (либо, в ÑелÑÑ
ÑазÑабоÑки, на localhost
). ÐаваÑÑ ÑÑоÑонним лÑдÑм возможноÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ ÑеÑевÑе запÑоÑÑ ÐºÑайне опаÑно. ÐÑоме Ñого, Service Worker API недоÑÑÑпен в Ñежиме пÑиваÑного пÑоÑмоÑÑа бÑаÑзеÑа Firefox.
ÐÑимеÑание: Service Worker'Ñ Ð²ÑигÑÑваÑÑ Ñ Ð¿ÑедÑдÑÑÐ¸Ñ ÑеÑений, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº AppCache, поÑÐ¾Ð¼Ñ ÑÑо не делаÑÑ Ð¿Ñедположений о Ñом, ÑÑо Ð²Ñ Ð¿ÑÑаеÑеÑÑ ÑделаÑÑ, и не ломаÑÑÑÑ, в ÑлÑÑаÑÑ ÐµÑли Ð¸Ñ Ð¿ÑÐµÐ´Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ оказÑваÑÑÑÑ Ð²ÐµÑнÑми; Ð²Ñ Ð¸Ð¼ÐµÐµÑе полнÑй конÑÑÐ¾Ð»Ñ Ð½Ð°Ð´ вÑем.
ÐÑимеÑание: Service worker'Ñ ÑиÑоко иÑполÑзÑÑÑ Ð¿ÑомиÑÑ (Promises). РобÑем ÑлÑÑае они бÑдÑÑ Ð¶Ð´Ð°ÑÑ Ð¾ÑвеÑа, поÑле коÑоÑого веÑнÑÑÑÑ Ñ ÑÑпеÑнÑм или неÑдаÑнÑм завеÑÑением. ÐÑÑ Ð¸ÑекÑÑÑа на пÑомиÑÐ°Ñ Ð´Ð»Ñ ÑÑого Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð¸Ñ Ð¸Ð´ÐµÐ°Ð»Ñно.
РегиÑÑÑаÑиÑService worker ÑнаÑала ÑегиÑÑÑиÑÑеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¼ÐµÑода ServiceWorkerContainer.register()
. Ð ÑлÑÑае ÑÑпеÑной ÑегиÑÑÑаÑии, service worker бÑÐ´ÐµÑ Ð·Ð°Ð³ÑÑжен клиенÑом и попÑÑаеÑÑÑ ÑÑÑановиÑÑÑÑ/акÑивиÑоваÑÑÑÑ (Ñм. ниже) Ð´Ð»Ñ Ð²ÑеÑ
URL, доÑÑÑпнÑÑ
полÑзоваÑелÑ, или ÑолÑко Ð´Ð»Ñ Ñказанного вами подмножеÑÑва.
Service Worker бÑÐ´ÐµÑ ÑледоваÑÑ ÑледÑÑÑÐµÐ¼Ñ Ð¶Ð¸Ð·Ð½ÐµÐ½Ð½Ð¾Ð¼Ñ ÑиклÑ:
Ðогда полÑзоваÑÐµÐ»Ñ Ð²Ð¿ÐµÑвÑе запÑоÑÐ¸Ñ Ð´Ð¾ÑÑÑп к ÑайÑÑ/ÑÑÑаниÑе, конÑÑолиÑÑемой Service Worker'ом, ÑÐ¾Ñ Ð¼Ð¾Ð¼ÐµÐ½ÑалÑно бÑÐ´ÐµÑ Ð·Ð°Ð³ÑÑжен .
ÐоÑле ÑÑого он бÑÐ´ÐµÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ ÐºÐ°Ð¶Ð´Ñе 24 ÑаÑа или около Ñого. Ðн Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ Ð¸ ÑаÑе, но он должен загÑÑжаÑÑÑÑ ÐºÐ°Ðº минимÑм каждÑе 24 ÑаÑа, ÑÑÐ¾Ð±Ñ Ð¿ÑедоÑвÑаÑиÑÑ Ð¸ÑполÑзование ÑÑаÑой веÑÑии кода клиенÑом.
УÑÑановка пÑоизводиÑÑÑ Ð² ÑлÑÑае еÑли загÑÑжаемÑй Ñайл пÑизнаеÑÑÑ Ð½Ð¾Ð²Ñм â либо оÑлиÑнÑм Ð¾Ñ Ñже ÑÑÑановленного service worker (опÑеделÑеÑÑÑ ÑеÑез побайÑовое ÑÑавнение), либо пеÑвÑм ÑÑÑанавливаемÑм service воÑкеÑом Ð´Ð»Ñ ÑÑой ÑÑÑаниÑÑ/ÑайÑа.
ÐÑли ÑÑо пеÑвÑй Ñаз, когда service worker оказалÑÑ Ð´Ð¾ÑÑÑпен, бÑÐ´ÐµÑ Ð¿Ñоведена ÑÑÑановка, а поÑле ÑÑпеÑного ÐµÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ â акÑиваÑиÑ.
ÐÑли service worker Ñже ÑÑÑеÑÑвÑеÑ, Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑÑÑанавливаеÑÑÑ Ð² Ñоновом Ñежиме, но не акÑивиÑÑеÑÑÑ â worker пеÑеÑ
Ð¾Ð´Ð¸Ñ Ð² ÑоÑÑоÑние в ожидании. ÐÐ¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð°ÐºÑивиÑÑеÑÑÑ ÑолÑко Ñогда, когда болÑÑе не оÑÑанеÑÑÑ Ð·Ð°Ð³ÑÑженнÑÑ
ÑÑÑаниÑ, иÑполÑзÑÑÑиÑ
ÑÑаÑÑй service worker. Ðак ÑолÑко ÑÑо ÑлÑÑиÑÑÑ, новÑй service worker акÑивиÑÑеÑÑÑ (ÑÑÐ°Ð½ÐµÑ Ð°ÐºÑивнÑм воÑкеÑом). ÐкÑиваÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоизойÑи ÑанÑÑе пÑи иÑполÑзовании ServiceWorkerGlobalScope.skipWaiting()
, а ÑÑÑеÑÑвÑÑÑие ÑÑÑаниÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿ÐµÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ð¿Ð¾Ð´ конÑÑÐ¾Ð»Ñ Ð°ÐºÑивного воÑкеÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Clients.claim()
.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе подпиÑаÑÑÑÑ Ð½Ð° InstallEvent
; Ð´Ð»Ñ Ñого ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð´Ð³Ð¾ÑовиÑÑ Ð²Ð°Ñ service worker к иÑполÑзованиÑ, к пÑимеÑÑ, ÑÑÐ¾Ð±Ñ ÑоздаÑÑ ÐºÐµÑ Ð¿Ñи помоÑи вÑÑÑоенного API Ñ
ÑанилиÑа и ÑазмеÑÑиÑÑ Ð²Ð½ÑÑÑи него даннÑе, коÑоÑÑе вам необÑ
Ð¾Ð´Ð¸Ð¼Ñ Ð² ваÑем пÑиложении Ð´Ð»Ñ ÑабоÑÑ Ð¾Ñлайн.
ÐÑÑÑ Ñакже ÑобÑÑие activate
. ÐоменÑ, когда ÑÑо ÑобÑÑие наÑÑÑпаеÑ, ÑвлÑеÑÑÑ ÑдаÑнÑм Ð´Ð»Ñ Ð¾ÑиÑÑки ÑÑаÑого кеÑа и вÑего, ÑÑо аÑÑоÑииÑовалоÑÑ Ñ Ð¿ÑедÑдÑÑей веÑÑией ваÑего service worker'а.
Service worker Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑвеÑаÑÑ Ð½Ð° запÑоÑÑ, иÑполÑзÑÑ ÑобÑÑие FetchEvent
. ÐÑ Ð¼Ð¾Ð¶ÐµÑе изменÑÑÑ Ð¾ÑÐ²ÐµÑ Ð½Ð° ÑÑи запÑоÑÑ Ð½Ð° ÑÐ²Ð¾Ñ ÑÑмоÑÑение иÑполÑзÑÑ Ð¼ÐµÑод FetchEvent.respondWith
.
ÐÑимеÑание: Так как вÑполнение oninstall
/onactivate
Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð½ÑÑÑ Ð²ÑемÑ, ÑпеÑиÑикаÑÐ¸Ñ service worker пÑедоÑÑавлÑÐµÑ Ð¼ÐµÑод waitUntil
, коÑоÑÑй возвÑаÑÐ°ÐµÑ Ð¿ÑомиÑ, когда вÑзÑваеÑÑÑ oninstall
или onactivate
. ФÑнкÑионалÑнÑе ÑобÑÑÐ¸Ñ Ð½Ðµ оÑпÑавлÑÑÑÑÑ service worker, пока пÑÐ¾Ð¼Ð¸Ñ Ð½Ðµ завеÑÑиÑÑÑ ÑÑпеÑно.
ÐÐ»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ ÑÑководÑÑва по ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑабоÑего пÑимеÑа ÑиÑайÑе ÐÑполÑзование Service Worker.
ÐÑÑгие ваÑианÑÑ Ð¸ÑполÑзованиÑService worker'Ñ Ñакже пÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ ÑÐ°ÐºÐ¸Ñ Ð²ÐµÑей, как:
РбÑдÑÑем service worker'Ñ Ð±ÑдÑÑ ÑпоÑÐ¾Ð±Ð½Ñ Ð½Ð° многие дÑÑгие полезнÑе веÑи Ð´Ð»Ñ Ð²ÐµÐ±-плаÑÑоÑм, пÑÐ¸Ð±Ð»Ð¸Ð¶Ð°Ñ Ð¸Ñ Ðº наÑивнÑм пÑиложениÑм. ÐÑимеÑаÑелÑно, ÑÑо дÑÑгие ÑпеÑиÑикаÑии могÑÑ Ð¸ бÑдÑÑ Ð¸ÑполÑзоваÑÑ ÐºÐ¾Ð½ÑекÑÑ service worker, к пÑимеÑÑ Ð´Ð»Ñ:
Cache
ÐÑедÑÑавлÑÐµÑ Ñ
ÑанилиÑе Ð´Ð»Ñ Ð¾Ð±ÑекÑов Request
/ Response
, коÑоÑÑе кеÑиÑÑÑÑÑÑ, как ÑаÑÑÑ Ð¶Ð¸Ð·Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ñикла ServiceWorker
.
CacheStorage
ÐÑедÑÑавлÑÐµÑ Ñ
ÑанилиÑе Ð´Ð»Ñ Ð¾Ð±ÑекÑов Cache
. Ðн ÑоздаÑÑ Ð³Ð»Ð°Ð²Ð½ÑÑ Ð´Ð¸ÑекÑоÑÐ¸Ñ Ð´Ð»Ñ Ð²ÑеÑ
именованнÑÑ
кеÑей, к коÑоÑÑм ServiceWorker
Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп, и поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¾ÑобÑажение ÑÑÑоковÑÑ
имÑн ÑооÑвеÑÑÑвÑÑÑего обÑекÑа Cache
.
Client
ÐÑедÑÑавлÑÐµÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи клиенÑа service worker. ÐÑо либо докÑÐ¼ÐµÐ½Ñ Ð² конÑекÑÑе бÑаÑзеÑа, либо SharedWorker
, коÑоÑÑй конÑÑолиÑÑеÑÑÑ Ð°ÐºÑивнÑм воÑкеÑом.
Clients
ÐÑедÑÑавлÑÐµÑ ÐºÐ¾Ð½ÑÐµÐ¹Ð½ÐµÑ Ð´Ð»Ñ ÑпиÑка обÑекÑов Client
; оÑновной ÑпоÑоб полÑÑиÑÑ Ð´Ð¾ÑÑÑп к клиенÑам акÑивного service worker'а ÑекÑÑего иÑÑоÑника.
ExtendableEvent
РаÑÑиÑÑÐµÑ Ð¶Ð¸Ð·Ð½ÐµÐ½Ð½Ñй Ñикл ÑобÑÑий install
и activate
, оÑпÑавлÑемÑÑ
ServiceWorkerGlobalScope
как ÑаÑÑÑ Ð¶Ð¸Ð·Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ñикла service worker'а. ÐÑо гаÑанÑиÑÑеÑ, ÑÑо лÑбое ÑÑнкÑионалÑное ÑобÑÑие (как FetchEvent
) не оÑпÑавиÑÑÑ Ð² ServiceWorker
, пока он не Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ Ñаблон даннÑÑ
, Ñдалив ÑÑÑаÑевÑие даннÑе кеÑа.
ExtendableMessageEvent
ÐбÑÐµÐºÑ ÑобÑÑий message
запÑÑкаеÑÑÑ Ð² service worker (когда канал ÑообÑений в ServiceWorkerGlobalScope
полÑÑил новое ÑообÑение из дÑÑгого конÑекÑÑа) â ÑаÑÑиÑÑÐµÑ Ð¶Ð¸Ð·Ð½ÐµÐ½Ð½Ñй Ñикл ÑакиÑ
ÑобÑÑий.
FetchEvent
ÐаÑамеÑÑ, пеÑедаÑÑийÑÑ Ð² обÑабоÑÑик ServiceWorkerGlobalScope.onfetch
, FetchEvent
пÑедÑÑавлÑÐµÑ Ñобой ÑобÑÑие полÑÑениÑ, коÑоÑое оÑпÑавлÑеÑÑÑ Ð² ServiceWorkerGlobalScope
ServiceWorker
. Ðн ÑодеÑÐ¶Ð¸Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ запÑоÑе и ÑезÑлÑÑиÑÑÑÑем оÑвеÑе и обеÑпеÑÐ¸Ð²Ð°ÐµÑ FetchEvent.respondWith()
меÑод, коÑоÑÑй позволÑÐµÑ Ð¾ÑпÑавиÑÑ Ð¿ÑоизволÑнÑй оÑÐ²ÐµÑ Ð¾Ð±ÑаÑно конÑÑолиÑÑемой ÑÑÑаниÑе.
InstallEvent
ÐаÑамеÑÑ, пеÑедаÑÑийÑÑ Ð² oninstall
обÑабоÑÑик, InstallEvent
пÑедÑÑавлÑÐµÑ Ñобой ÑобÑÑие ÑÑÑановки, коÑоÑое оÑпÑавлÑеÑÑÑ ServiceWorkerGlobalScope
ServiceWorker
. Ðак наÑледник ExtendableEvent
, он гаÑанÑиÑÑеÑ, ÑÑо ÑÑнкÑионалÑнÑе ÑобÑÑиÑ, Ñакие как FetchEvent
, не бÑдÑÑ Ð¾ÑпÑÐ°Ð²Ð»ÐµÐ½Ñ Ð²Ð¾ вÑÐµÐ¼Ñ ÑÑÑановки.
Navigator.serviceWorker
ÐозвÑаÑÐ°ÐµÑ Ð¾Ð±ÑÐµÐºÑ ServiceWorkerContainer
, коÑоÑÑй обеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð´Ð¾ÑÑÑп к ÑегиÑÑÑаÑии, ÑдалениÑ, Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ коммÑникаÑии Ñ Ð¾Ð±ÑекÑами ServiceWorker
аÑÑоÑииÑÑемого докÑменÑа.
NotificationEvent
ÐаÑамеÑÑ, пеÑедаваемÑй в обÑабоÑÑик onnotificationclick
, инÑеÑÑÐµÐ¹Ñ NotificationEvent
пÑедÑÑавлÑÐµÑ ÑобÑÑие ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð½Ð° клик, коÑоÑое оÑпÑавлÑеÑÑÑ Ð² ServiceWorkerGlobalScope
service worker'а.
ServiceWorker
ÐÑедÑÑавлÑÐµÑ service worker. ÐеÑколÑко конÑекÑÑов бÑаÑзеÑа (ÑÑÑаниÑÑ, worker'Ñ, и Ñ.д.) могÑÑ Ð±ÑÑÑ Ð°ÑÑоÑииÑÐ¾Ð²Ð°Ð½Ñ Ñ Ð¾Ð´Ð½Ð¸Ð¼ обÑекÑом ServiceWorker
.
ServiceWorkerContainer
ÐÑедоÑÑавлÑÐµÑ Ð¾Ð±ÑекÑ, опиÑÑваÑÑий service worker как обÑий блок в ÑкоÑиÑÑеме ÑеÑи, вклÑÑÐ°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑегиÑÑÑиÑоваÑÑ, оÑклÑÑаÑÑ Ð¸ обновлÑÑÑ service worker'Ñ, и пÑедоÑÑавлÑÐµÑ Ð´Ð¾ÑÑÑп к ÑоÑÑоÑÐ½Ð¸Ñ ÑекÑÑего и дÑÑÐ³Ð¸Ñ Ð·Ð°ÑегиÑÑÑиÑованнÑÑ service воÑкеÑов.
ServiceWorkerGlobalScope
ÐÑедÑÑавлÑÐµÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑй конÑекÑÑ Ð¸ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ service worker'а.
ServiceWorkerMessageEvent
СодеÑÐ¶Ð¸Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑобÑÑии, оÑпÑавленном ÑÐµÐ»ÐµÐ²Ð¾Ð¼Ñ ServiceWorkerContainer
.
ServiceWorkerRegistration
ÐÑедÑÑавлÑÐµÑ ÑегиÑÑÑаÑÐ¸Ñ service worker'а.
SyncEvent
Ðе ÑÑандаÑÑно
SyncEvent пÑедÑÑавлÑÐµÑ ÑинÑ
Ñонное дейÑÑвие, коÑоÑое оÑпÑавлÑеÑÑÑ ServiceWorkerGlobalScope
ServiceWorker.
SyncManager
Ðе ÑÑандаÑÑно
ÐбеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ ÑегиÑÑÑаÑии и пеÑеÑиÑÐ»ÐµÐ½Ð¸Ñ ÑÐ¸Ð½Ñ ÑоннÑÑ ÑегиÑÑÑаÑии.
WindowClient
ÐÑедÑÑавлÑÐµÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи клиенÑÑкого service worker'а, пÑедÑÑавленного в виде докÑменÑа в конÑакÑе бÑаÑзеÑа, конÑÑолиÑÑемого акÑивнÑм воÑкеÑом. ÐÑо оÑобÑй Ñип обÑекÑа Client
Ñ Ð½ÐµÐºÐ¾ÑоÑÑми дополниÑелÑнÑми меÑодами и ÑвойÑÑвами.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4