どして navigator.appName
Safari、Firefox、Chromeの「Netscape」を返しますか?
古いブラウザのNetscapeとどう関係しているのでしょうか? DOM0のせいでしょうか?
はい、それは互換性の問題のためであり、依存するものではありません。
[〜#〜] mdn [〜#〜]言います: "これはもともとDOMの一部でしたレベル0、ただしHTML5仕様に含まれています。 "
Mozillaこちらのドキュメント をご覧ください。
ところで;これがブラウザ検出に使用できない理由です。 ブラウザの検出は悪い習慣です。可能な限り常に回避する必要があります。代わりに機能検出を実行します。しかし、誰かがこれを主張するなら;代わりにuserAgent
プロパティを使用する必要があります。
UPDATE 1: 互換性の変更 =; IE11は、"Netscape"
プロパティに対してnavigator.appName
も返すようになりました。これは、HTML5標準を反映し、他のブラウザーの動作に一致させるためです。 userAgent
文字列の変更も参照してください here ...機能検出の詳細 here ...
UPDATE 2:Microsoft Edgeは、"Netscape"
に対してnavigator.appName
も返します。
ジョニー・ステンバックの投稿に基づく:
これは以前のmozillaニュースグループで議論されていましたが、ブラウザでスニッフィングコードを使用するWeb上のすべてのページを変更する場合は、navigator.appNameがmozillaでも「Netscape」を返すことが決定されました(そしてそれは非常に大きな部分です)現在のWebの)mozillaを認識する必要があります。コンテンツ開発者が認めている限り、mozilla == netscape == mozillaであるため、それは起こりません。
ソース ここ 。
IE11以降、Explorerはnavigator.appNameを呼び出すときに「Netscape」も返すようになりました。
IE 11のブラウザ検出のためにnavigator.userAgentを検索し、そのレイアウトエンジンを探すことができます。私の経験では、かなりうまく機能します。これを参照してください。 post 。