web-dev-qa-db-ja.com

JavaScriptを使用してMicrosoft's EdgeまたはSpartanを検出する

EdgeまたはSpartanブラウザーのユーザーエージェントは既知ですか?誰でもこのブラウザを検出して、リリース前にIEと区別する方法を教えてもらえますか?

19
Vandervals

簡単なグーグル検索であなたが探している答えが見つかりました: http://forum.piwik.org/read.php?3,125732

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0

したがって、一致する必要があります:"Edge\/\d+"

18
Supamiu

この答え によると:

// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;
5
adamdport

Microsoft Edge UA文字列:

Mozilla/5.0(Windows NT 10.0)AppleWebKit/537.36(KHTML、Geckoなど)Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136

このブログ投稿で詳細を説明します

Neowinは最近、MicrosoftのWindows 10、Spartan用の新しいブラウザがChrome UA文字列、 "Mozilla/5.0(Windows NT 10.0; WOW64)AppleWebKit/537.36(KHTML、 Geckoなど)Chrome/39.0.2171.71 Safari/537.36 Edge/12.0″。これは意図的に行われます。

また、文字列全体が「Edge/12.0」で終わることに気付くでしょう。これはChromeではありません。

これは、MicrosoftがIE 11、Windows 8ではMozilla/5.0(Windows NT 6.3; Trident/7.0; rv: 11.0)この投稿で説明したように、Geckoのように。

ユーザーエージェントスニッフィングとは何ですか?

多くの場合、Web開発者は、ブラウザの検出のためにUAスニッフィングを行います。 Mozillaはブログでそれをうまく説明しています。

異なるブラウザーに異なるWebページまたはサービスを提供することは通常、悪い考えです。ウェブは、使用しているブラウザやデバイスに関係なく、すべての人がアクセスできるようになっています。特定のブラウザをターゲットにするのではなく、機能の可用性に基づいてWebサイトを徐々に強化するWebサイトを開発する方法があります。

ユーザーエージェントの履歴を説明する素晴らしい記事です

多くの場合、怠け者の開発者はUA文字列を探り、視聴者が使用していると思われるブラウザに基づいてWebサイトのコンテンツを無効にします。 Internet Explorer 8は開発者のフラストレーションの一般的なポイントであるため、ユーザーが頻繁にIEのバージョンを使用しているかどうかを確認し、機能を無効にします。

Edgeチームは、ブログでこれについてさらに詳しく説明しています。

すべてのユーザーエージェント文字列には、トークンだけでなく、「意味のある」バージョン番号など、実際に使用しているブラウザよりも多くの他のブラウザに関する情報が含まれています。

Internet Explorer 11のUA文字列:

Mozilla/5.0(Windows NT 6.3; Trident/7.0; rv:11.0)Geckoのような

Microsoft Edge UA文字列:

Mozilla/5.0(Windows NT 10.0)AppleWebKit/537.36(KHTML、Geckoなど)Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136

UserAgentプロパティは、W3Cの議論でPatrick H. Laukeによって「嘘の拡大し続けるパック」として適切に説明されています。 (または、むしろ、実際に有用で正確な情報を少し伝えようとしながら、古いUAスニッフィングコードがすぐに倒れることのない十分なレガシーキーワードを追加するというバランスのとれた行為です。)

Web開発者は、UAスニッフィングを可能な限り避けることをお勧めします。最新のWebプラットフォーム機能は、ほとんどすべて簡単に検出できます。過去1年間、Microsoft Edgeを検出するために更新されたUAスニッフィングサイトをいくつか見てきましたが、それは従来のIE11コードパスを提供するためだけです。 Microsoft EdgeはIE11の動作ではなく「WebKit」の動作と一致するため、これは最善のアプローチではありません(Edge-WebKitの違いはバグの修正に関心があります)。

私たちの経験では、Microsoft Edgeはこれらのサイトの「WebKit」コードパスで最適に動作します。また、さまざまなデバイスでインターネットが利用できるようになったため、不明なブラウザは適切であると想定してください。現在の既知のブラウザのごく一部でのみ動作するようにサイトを制限しないでください。これを行うと、あなたのサイトは将来的にほぼ確実に壊れます。

結論

Chrome UA文字列を提示することにより、これらの開発者が使用しているハッキングを回避し、ユーザーに最高のエクスペリエンスを提供できます。

4

UA文字列で「エッジ」を探します。

マーケティングの人々の心の中では世界は完璧ですが、実際にはブラウザにはバグが何年もの間修正されずに残っており、常にそうです。

私の場合、エッジとChromeをテストする必要がある問題は、Spartan/Edgeが正しくレンダリングするChromeドロップダウンの高さのバグです。 Microsoftはここで修正するものがなく、Googleは1年以上そのバグを無視しています(Chromeの古いバージョンでは正しくレンダリングされていました)。

1
Pax Terminus

別の機能検出ベースのオプション。

function isBrowserEdge () {
    return typeof CSS !== 'undefined' && CSS.supports("(-ms-ime-align:auto)");
}
0
Eli Crow