2012-01-18 14 views
1

GeoLocation APIをチェックするコードスニペットがあります。それが利用可能な場合、私は現在の位置を取得しようとします。しかし、ブラウザによっては、コードは動作が異なります:ChromeでHTML5 GeoLocation API - コールバックはまったく呼び出されません。

  • をIEで、successCallbackはFF内のすべてのF5のrefres
  • と呼ばれ、私はエラーコード= 2(POSITION_UNAVAILABLE)とsuccessCallbackまたはerrorCallbackを取得
  • 私は成功を得るコールバックか何もない。私は待って、待って、何もない

実際に私は成功する必要があるいくつかの一貫した方法でコールバック...それを達成するための変更はありますか?

コードスニペット:

function successCallback(position) { 
    var latitude = position.coords.latitude; 
    var longitude = position.coords.longitude; 
    alert("Your location is: " + latitude + "," + longitude); 
} 

function errorCallback(error) { 
    console.log(error); 
} 

if (Modernizr.geolocation) { 
    navigator.geolocation.getCurrentPosition(successCallback, errorCallback, { maximumAge: 0 }); 
    alert("geolocation is enabled"); 
} else { 
    alert("geolocation is NOT enabled"); 
} 

クイック注1:

alert("geolocation is enabled"); 

はたびに呼び出されます。

クイック注2:

設定:

maximumAge: 1 
良い作品

。今すぐChrome & IEはsuccessCallbackを毎回呼び出します。 FFだけが私を驚かせ、successCallbackをランダムに呼び出します。

答えて

3

これについてはあまりできません。あなたはブラウザ開発者の気まぐれで、WiFiアクセスポイントのフィンガープリンティングやIPルックアップに基づいて自分の位置を把握しようとしています。

私は次のブラウザでコード(http://jsfiddle.net/YbtSZ/2/)をテストしたところ、矛盾していることが判明しました。

Mac 10.7。2

  • MacのChromeは - Macで
  • のSafariで動作します - - Macで
  • FF 9を動作します動作しません

XPネイティブ

  • FF 9 XPで - 作品
  • IE 8でXP - 動作しません(ジオロケーションがサポートされていない)

XPは、Macに仮想化さ

  • を実行しているXP上のクロム(マックで仮想化さ) - 動作しません(POSITION UNAVAILABLE)
  • FF 9動作しませんXP(Mac用に仮想化さ)に
  • IE 8
  • (POSITION_UNAVAILABLE) - - XP(Mac用に仮想化さ)上では動作しません(ジオロケーションがサポートされていない)
0

Modernizrを試してみるとよいでしょう。これはHTML5機能を抽象化して一貫した結果を得るためのJavaScriptライブラリです。詳細については、ドキュメントをチェックしてください。

関連する問題