4

javasriptなしでユーザーエージェントのタイムゾーンを決定する方法はありますか?

通常、私はこのjavascriptのスニペットを実行します:

<script type="text/javascript" language="JavaScript">
 var offset = new Date();
 document.write('<input type="hidden" id="clientTzOffset" 
 name="clientTzOffset" value="' + offset.getTimezoneOffset() + '"/>');
</script>

ただし、多くのモバイルおよびクライアントでは、JS が存在しないか、オフになっています。私にできる賢いことはありますか?

4

4 に答える 4

5

両方を使う。JavaScript でリストまたはテキスト フィールドのデフォルト値を設定します。JavaScript を使用していない人の割合は非常に少ないため、負担はわずかです。

「リクエストの Date: ヘッダーを使用する」と言うつもりでしたが、それはレスポンス ヘッダーのようです。

于 2009-05-19T02:35:32.380 に答える
3

別の解決策を考えましたが、少し複雑です。max-age: 1 レスポンス ヘッダーを使用していくつかの偽の HEAD リクエストを設定し、ブラウザに再取得を強制します。次のように、最新のブラウザーから if-modified-since ヘッダーを受け取る必要があります。

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

最初の応答で Last-Modified ヘッダーを送信しないように注意してください。

キャッシュ検証のために If-Modified-Since ヘッダー フィールドを送信するときに最良の結果を得るには、クライアントは可能な限り、以前の Last-Modified ヘッダー フィールドで受信した正確な日付文字列を使用することをお勧めします。

「可能な限り」免責事項に注意してください。これとヘッダー記述の他の部分は、サーバーについて何も知らない場合、クライアントが独自のクロックを使用することを意味します。

ヘッダーの適切な組み合わせにより、これは実際には非常にうまく機能します。

編集: FF でいくつかのテストを試みましたが、クライアント時間で if-modified-since をトリガーする有効なヘッダーの組み合わせが見つかりませんでした。FF は、以前に最終変更されたヘッダーを取得した場合にのみヘッダーを送信し、値を反映するだけです (有効な日付でなくても)。

于 2009-05-21T05:47:22.050 に答える
2

おそらく、サーバー側の言語を使用して、IP ルックアップを実行し、その国からどのタイムゾーンにいるかを判断できます。

ただし、これは問題になる可能性があると思います。

この道を進んでいる場合は、この質問 (および回答) が役立つ場合があります。

IP アドレスから場所を取得する

于 2009-05-19T02:22:46.900 に答える
1

ユーザーがいるタイムゾーンを尋ねる代わりに、単に「正しい時間を選択してください」と尋ね、時間のリストを表示する Web サイトを見たことがあります。「現在どのタイムゾーンにいるか」とは微妙な違いですが、はるかに理解しやすいです。残念ながら、私はもうウェブサイトを見つけることができません

于 2009-05-19T02:46:12.733 に答える