WebKitではGeolocation APIがキャッシュをブロックするらしい

IE9ではnavigator.geolocationのチェックでメモリリークするらしいという話を書いたけれど、WebKitではページのキャッシュをブロックするらしい。なんと…

またまたModernizrから。

Accessing geolocation activates the geolocation service which currently blocks page caching. Checking for the geolocation property avoids this.

https://bugs.webkit.org/show_bug.cgi?id=43956

ただ回避策があって、geolocationプロパティにアクセスしなければよいらしい。というわけで検出コードがこうなった。

tests['geolocation'] = function() {
    return 'geolocation' in navigator;
}

紹介されてるWebKitのバグを読むと進行が止まってるようで、WebKit側での解決を待つにはちょっと長そう。

IE9のメモリリークも解消

!!navigator.geolocationメモリリークを起こしてたIE9は上の変更でどうなったのかというと、なおったらしい

やったね。実際にAPI使うときにはリークするしキャッシュもブロックするんだろうからほんとは解決じゃないんだけど、検出コードでそんな無駄なことが起こらなくなったのはよろしいわけで。