2012-01-29 25 views
1

私のアプリにはフィードバックフォームがあります。ユーザーのブラウザ&のバージョンをjQueryでキャプチャしてフォームに投稿する方法はありますか?ユーザーのブラウザ情報を取得してフォームフィールドに送信するにはどうすればよいですか?

おかげ

+0

[ブラウザの検出バージョン]の複製可能(http://stackoverflow.com/questions/5916900/detect-version-of-browser);隠しフィールドでそれを送信してください。 – Piskvor

+1

jQueryは必要ありません。クライアント上で 'window.navigator.userAgent'を使うか、サーバ上でHTTP_USER_AGENTヘッダを使うようにしてください(David Clarkeの回答ごと)。上記のいずれにも含まれている基準がないことに注意してください。結果を完全に正確に頼ってはなりません。 – RobG

答えて

2

この情報は、HTTP_USER_AGENTヘッダーに含まれている、あなたは、クライアント上でそれを把握してからフォームデータの一部としてそれを投稿しようとしなくても、サーバー上でそれを取得することができます。明らかにこの情報を抽出するメカニズムは、サーバー側のエンジンによって異なります。 This is the ASP.NET versionしかし、あなたが使用しているどのサーバでもヘッダ情報を取得する同等の方法があります。 @ mVChrの答えは、実装しようとしているブラウザ固有の動作がいくつかある場合に、クライアント側でユーザエージェントを判断しようとしているときに便利です。

隠しフォームのフィールドに情報を戻すと、すでにリクエストに含まれている情報が効果的に複製されます。

4
JSON.stringify($.browser) // => {"webkit":true,"version":"535.11","safari":true} 
          // or whatever 
+0

ありがとう私はこれを試してみましたが、私はクロムにあり、それはサファリを真実として示しています。これを正確にする方法はありますか? – AnApprentice

0

のような隠しフォームフィールドを作成します。それを埋めるためにjQueryのを使用すると

<input type="hidden" name="browserVersion" id="browserVersion" value="" /> 
<input type="hidden" name="browserName" id="browserName" value="" /> 

を。

var browserObj = JSON.stringify($.browser); //@mVChr 

$("#browserVersion").val(browserObj.version); 
... 

などです。

+0

ありがとうございました問題は、私はChromeを使用しており、Safariを表示していますか? – AnApprentice

+0

私はChromeがSafariで使用されているエンジンであるWebkitをベースにしていると考えています。そのため、ユーザーエージェントの文字列間にいくつかの類似点があるようです。ユーザーエージェント文字列からブラウザのバージョンを特定することは、芸術と科学です。 –

+1

@AnApprentice DavidClarkeは正しいです...しかし、生のjavascriptを使用すると、必要なもの(http://www.javascripter.net/faq/browsern.htm)を手に入れることができますが、その日の終わりには実際に解析しているデータの種類を知る必要があります。 Firebugコンソールまたはクロムコンソールを使用してオブジェクト全体を読み込み、サファリとクロム出力の違いを確認します。 幸運の仲間のことを念頭に置いて、これがあなたの答えです! – Relic

関連する問題