9

ユーザーが私の Web サイトにアクセスすると、PHP でロケーション セッションが設定されているかどうかを確認します。ユーザーの場所に設定されたセッションがない場合は、ユーザーを www.domain.net/location にリダイレクトします。このページには、ユーザーが場所を選択するためのいくつかのオプションがあります。ブラウザで許可されている場合、オプションの 1 つは、ブラウザを使用してこれを設定することです。以下のコードは非常にうまく機能します。

私が抱えている問題は、ユーザーがブラウザーで場所を共有することを許可すると、これが永久に設定されているように見えることです。ユーザーがブラウジングしている間に、場所を変更することにした場合、ボタンをクリックして再度 www.domain.net/location ページに移動します。何もポップアップせずに、ブラウザの場所を自動的に取得してリダイレクトします。ページには、クリック可能なマップを含む他の場所のオプションがあります。ユーザーがブラウザを使用して場所を設定するか、許可するかをブラウザが再度尋ねるように、何かをリセット、期限切れ、削除、強制できる必要があります。ユーザーは他のオプションのいずれかを使用できます。

私が考えることができる唯一のことは、下の実際のJavascriptを別のページに移動し、www.domain.net/locationページに「正確な場所を使用する」などの別のボタンを配置して、以下のJSにリンクすることです.

これまたは何かをリセットする別の方法を知っている人はいますか?

<script type="text/javascript" charset="utf-8">


    function findLocation()
    {
      var options = {timeout: 60000};
      navigator.geolocation.getCurrentPosition(foundLocation, noLocation, options);
    }

    function foundLocation(position)
    {
      var lat = position.coords.latitude;
      var lng = position.coords.longitude;

      //alert('Found location: ' + lat + ', ' + lng);
      window.location = "http://www.domain.net/?lat=" + lat + "&lng=" + lng;
    }

    function noLocation()
    {
      alert('Could not find location');
      window.location = "http://www.domain.net/location";
    }

    findLocation();


  </script>
4

4 に答える 4

2

これはブラウザごとの設定であり、スクリプト側で制御できるものではありません。できることは、特定のブラウザの特定の Web サイトの地理位置情報の設定を更新する方法を説明する、このようなリンクを提供することです。

/locationにリンクするのではなく、リンクするか、そのようなものにすることで、特定の問題を回避できる/location?updateようです。基本的に、場所のページに移動しますが、自動リダイレクトを防ぐ何かを追加して、ユーザーが自分の場所について別の決定を下せるようにします。

于 2013-02-19T11:47:01.377 に答える
1

私は確かにJavascriptLocationAPIを数回しか使用していませんが、私の理解では、ブラウザーはユーザー設定を保存します(この仮定はここで強化されているようです)。

引用されたページは、ユーザーの設定がURLごとではなく、サイト(ドメイン)ごとに保存されていることを示しています。そうでない場合は、ランダム化された文字列値をURLに追加することでうまくいくはずです。編集:私はチェックしました、そして、免除はドメインごとに定義されています:

それは、コードを別のページに延期すること、またはページロードで実行されないイベントにコードをバインドすることを提案するので、私が考えられる最善の解決策です。

于 2013-02-19T11:42:26.860 に答える
1

ユーザーがサイトにその場所を使用する許可を与えた場合、ブラウザのセキュリティ設定にサイトの URL と共に「許可」が保存されます。実際の場所は保存されません。それはコードを介して行われます。新しい場所を使用したい場合は、javascript で取得してください。

navigator.geolocation.getCurrentPosition(function(position) {
  do_something(position.coords.latitude, position.coords.longitude);
});

ジオロケーションの取得について詳しくは、https ://developer.mozilla.org/en-US/docs/WebAPI/Using_geolocation を参照してください。

場所を Cookie に保存してその場所を再利用する場合は、Cookie を消去してリセットするか、Cookie をまったく使用しないでください。

Chrome の地理的位置設定の保存を確認するには、Chrome オプションの [トリプル バー] > [設定] > [詳細...] を開き、[プライバシー] で [コンテンツの設定] をクリックし、[場所] で [例外の管理] をクリックします。

于 2014-04-18T16:11:50.953 に答える
0

URL の末尾に ?change-location を追加し、PHP を使用してこれを確認してから、ページ上の Javascript を非表示にすることにしました。これは素晴らしい修正ではありませんが、これはブラウザーごとの設定であり、スクリプトを使用してリセットできるものではないようです。ユーザーが「私の好みを覚えておいてください」と言ったら、設定を掘り下げてブラウザでこれを変更するまで、それが何をするかのようです。

于 2013-02-19T12:26:08.733 に答える