質問: 以下、Firefox 3.5で試しています。 geolocation APIで偽装位置取得を防ぎたいと思い調査しているのですが、 javascript:(function(){navigator.geolocation.getCurrentPosition=function(cb){alert('abc')};})(); 上記のようなBookMarkletを用意し、の位置取得機能デモページを実行すると、実行後しばらくは乗っ取りが成功し、位置を取得しようとするとアラート「abc」が表示されます。 が、ブラウザリロード等をしなくても、10秒も立たないうちに、元の位置取得機能が動作するようになります。 これは、どういう原理で元に戻っているのでしょうか? また、その原理を利用して、navigator.geolocation.getCurrentPositionが乗っ取られないことを保証するような施策はありますでしょうか(意図的に、その修復機構を実行させる、みたいな)? 教えていただければ幸いです。
回答: Ajaxによる非同期通信によって実現できます。 つまり、下記の1~3を無限ループすることで実装します。 1. サーバからの応答(位置情報)を受信 2. クライアント側で一定時間待機する(この場合は10秒程度) 3. サーバへ再リクエストを投げる 「非同期通信によるファイルの取得」が参考になるでしょう。