52

navigator.appNameSafari、Firefox、および Chrome で「Ne​​tscape」が返されるのはなぜですか?

彼らは古いブラウザの Netscape と何の関係があるのでしょうか? DOM0が原因でしょうか?

4

4 に答える 4

45

はい、それは互換性の問題のためであり、依存するものではありません。
MDNは次のように述べています。

ここでMozillaのドキュメントを参照してください。

ところで; そのため、これをブラウザーの検出に使用することはできません。ブラウザの検出は悪い習慣であり、可能な限り避けるべきです。代わりに特徴検出を行います。しかし、誰かがこれを主張するなら; userAgent代わりにプロパティを使用する必要があります。

更新 1 :互換性の変更によると。IE11は、HTML5 標準を反映し、他のブラウザーの動作と一致するように、プロパティも返すようになりました。ここで文字列の変更も参照してください...特徴検出の詳細についてはこちら..."Netscape"navigator.appNameuserAgent

更新 2 : Microsoft Edge"Netscape"もfor を返しますnavigator.appName

于 2013-01-29T01:00:40.030 に答える
8

Johnny Stenback の投稿に基づく:

これは何年も前に mozilla ニュースグループで議論され、navigator.appName は mozilla でも 'Netscape' を返すべきであると決定されました。これは、ブラウザ スニッフィング コードを使用する Web 上のすべてのページでこれを変更する場合 (これは非常に重要な部分です)コンテンツ開発者が考える限り、mozilla == netscape == mozilla であるため、それは起こりませんし、そうする理由もありません。

ソースはこちら

于 2013-01-29T01:06:16.937 に答える
3

IE11 以降では、navigator.appName を呼び出したときに Explorer も "Netscape" を返すようになりました。

更新 この回答は今ではかなり古くなっていますが、上記のステートメントへのリンクは次のとおりです。 /bg182625(v=vs.85)?redirectedfrom=MSDN#legacy-api-additions-changes-and-removals

于 2013-10-12T10:17:16.880 に答える