4

HTML5機能の1つであるプロジェクトのジオロケーションをテストしているときに、ユーザーがプロンプトを許可または拒否せずに閉じることができ、プロンプトの目的全体が損なわれることに気付きました。

また、私のプロジェクトでは、ユーザーの場所に応じてデータを動的にユーザーに表示したいので、これを行うことはできません。ユーザーの応答がわからないと、成功/エラーの2つのコールバックのいずれもトリガーされないためです。

だから私はこれに対する解決策があるかどうかを調べ始めました、そしてこれに対する多くの提案はタイムアウトを設定することです、私は試しました、そしてすべてが完全に機能します。ただし、ここでの小さな欠陥の1つは、タイムアウトの有効期限に達するまでに、すべてのデータがすでに表示されていることです。すべてを言うと、場所が検出されないため、すべてを意味します。

そこで、うまくいく可能性のある2つの解決策を考え出しました。1)ユーザーに場所の共有を許可/拒否するように強制するカスタムジオロケーションプロンプトを作成し、ブラウザに応答を渡して場所の設定を設定します2)ページの読み込みを一時停止します(停止します)レンダリングされないようにします)そして、タイムアウトの有効期限に達するか、ユーザーからの応答を受け取るまで待ちます

誰かがこれらの2つのソリューションのいずれかを実装する方法を知っていますか?

PS:申し訳ありませんが、これが不明確でない場合は、私の英語がおかしいことは知っていますが、詳細を説明することができます。

みんなありがとう!

4

1 に答える 1

3

悪意のある開発者がこの方法を使用してユーザーをだます可能性があるため、プロジェクトがブラウザー ベースの場合、カスタムの Geolocation プロンプトを使用できないはずです。また、Geolocation API は非同期イベントであるため、待機中にページの残りの読み込みを続行します。

私がお勧めするのは、else 句の代わりに条件ステートメントを使用することです。このように、スクリプト関数は場所が共有された後にのみ実行され、地理位置情報が提供されない場合に何が起こるかについてフォールバックできます (データが提供されない場合に状況が発生するため、これを強くお勧めします)。

JS を使用して地理位置情報を確認する条件ステートメントの例:

if (navigator.geolocation) {
    // code to run if there is geolocation information
}
else{
// code to run if no geolocation info is given to the browser
}
于 2013-02-18T23:04:53.187 に答える