この答えは非常に時代遅れですが、石器時代には非常に関連性がありました。
ここでOperaのあいまいさをグーグルで検索したので、機能検出はnavigator.userAgentの解析よりも便利だと思います。IE16が/MSIE16.0; / regexpを解析するかどうかは誰にもわかりませんが、document.allがサポートされることは間違いありません。実際には、機能は通常、「XMLHttpRequestがありませんか?f .... d IE6です!」のように、ブラウザーの同義語です。
非IEブラウザはdocument.allをサポートしていませんが、Maxthonなどの一部のブラウザはuserAgentをスクランブルできます。(もちろん、スクリプトは何らかの理由でFirefoxでdocument.allを定義できますが、簡単に制御できます。)したがって、この解決策をお勧めします。
ここで編集私は完全なリソースを見つけました。
編集2私はそのdocument.allもOperaでサポートされていることをテストしました!
var is = {
ff: window.globalStorage,
ie: document.all && !window.opera,
ie6: !window.XMLHttpRequest,
ie7: document.all && window.XMLHttpRequest && !XDomainRequest && !window.opera,
ie8: document.documentMode==8,
opera: Boolean(window.opera),
chrome: Boolean(window.chrome),
safari: window.getComputedStyle && !window.globalStorage && !window.opera
}
使用は簡単です:
if(is.ie6) { ... }