2016-04-07 8 views
0

私はこれが悪い習慣であり、機能認識はウェブサイトを構築するための方法でなければならないことを知っています。しかし、それは私のユースケースではありません。どのようにユーザーのブラウザクライアント側を検出できますか?

私は自分のブラウザの拡張機能のディストリビューションが異なっており、現在のブラウザに基づいてダウンロードボタンを変更したいと考えています。

私はnavigator.userAgentを使用しようとしましたが、これはほとんどのブラウザが普及しているすべてのユーザーエージェントを設定しているため、非常に役に立たないことがわかりました。例えば、クロムはこれを持っています。

navigator.userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36" 

多くのWebサイトで、ダウンロードボタンにこの機能があります。これはどのように正しく行われますか?

編集:「Mozzila/X.X」がuserAgent文字列の先頭にある理由の履歴を確認しました。誤解に対する謝罪。

+0

どのように役に立たないのですか? Chromeは「Chrome」と言っています... userAgentsで十分です。細心の注意を払う必要があります。 – dandavis

+0

彼らはもっときれいかもしれませんが、私は認めます。最も一般的な問題は「Safari」と「Chrome」です。それが "クロム"を持っていれば、それはサファリではない、それを処理することを確認し、残りは半容易です。 – dandavis

+0

@dandavis、私はMozillaがFirefoxを意味すると仮定していました。今はそうではないことが分かります。受け入れられた答えはひどい... – peso

答えて

1

複数の方法でブラウザを検出できます。 Chromeの

、離れnavigator.userAgentに正規表現を作るから:私はあなたが詳細はthis answerを確認することをお勧め

var isChrome = !!window.chrome && !!window.chrome.webstore; 

var isChrome = /Chrome/.test(navigator.userAgent); 

はまた、上のチェックを行うことができます。

また、ブラウザ検出にModernizr.jsを使用することを検討する必要があります。

+0

それは別の方法で嗅ぐブラウザです。その点で信頼性の低い方法で。バージョンの更新や不注意なスクリプトで失効する可能性のある一般的な副作用を探しています... – dandavis

+0

私はその実装が嫌いです。ブラウザーを検出する最も確かな方法を望むなら、私には[Modernizr.js](https://modernizr.com/)に依存しています。さもなければ、残りの解は 'navigator.appName'、' navigator.appVersion'、 'navigator.userAgent'またはこれらの醜いハックの正規表現です。 –

+0

devsがuserAgentをすばやく却下する理由はわかりません。それはまさに使用されるべきものです。ユーザーの0.02%が自分のものを変更した場合はそれもそうです。彼らもJSを無効にすることができるので、WTHです。あなたの戦いを選ぶ。 – dandavis

関連する問題