はじめに
こんにちは!☃️🎄
LIFULLその2 Advent Calendar 2020の11日目は@mimatyがお送りします。
普段はLIFULL HOME'S不動産売却査定の開発をしています。
所属している開発グループでは強い個人になるために、
週に2時間自分の好きなことを勉強して良い時間が設けらました。
この記事ではその時間にWEBブラウザ全般について調べていた中、
navigatorの仕様についてわかったことを書きます。
本題
Serveice Workerでもしgeolocationを扱えるのであれば、
WEBサイトを閉じた後のユーザを追跡できてしまうのではないかと思ったのですが、
そんなことはできませんでした。
メインスレッドでもワーカースレッドでも同じようにnavigatorを呼び出すことができるのですが、
ワーカースレッドのnavigatorはgeolocation属性を持っていません。
console.log(navigator.geolocaiton)
// Geolocation {}
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js');
}
console.log(navigator.geolocation)
// undefined
同じnavigatorから呼び出されるものであっても、
メインスレッド内で呼び出されるものは、
window.navigatorで呼び出されるNavigator
ワーカースレッド内で呼び出されるものは、
WorkerGlobalScope.navigatorで呼び出されるWorkerNavigator
とのことでした。
つまり、WorkerNavigatorにはgeolocationが実装されておらず、
Service Workerからユーザの位置情報を取得することはできません。