私は IE11 が送信方法を変更したことを知っており、この応答navigator.userAgent
を見てきました。これは、必要なのが IE11 以上である場合にはうまく機能しますが、IE9 以上が必要です。Trident コードネームが IE9 で導入されたことをどこかで読んだことがありますが、IE8 を簡単にテストすると、そこのユーザー エージェントにも Trident が含まれていることがわかります。
私の正規表現はあまり良くありません。これらの文字列を分割して、次のセミコロンとの間に何があるかを判断してTrident/
、どのバージョンを扱っているかを判断するにはどうすればよいですか? (代わりに機能検出を使用するように言わないでください。ここではオプションではありません。)
IE8:
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BO1IE8_v1;ENUS)"
IE9:
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)"
私の既存のコード(IE8をキャッチしない)は次のようになります:
if (navigator.userAgent.match(/Trident/)) {
// it's supported; do stuff
}
基本的に、IE9 から 5.0 を取得し、IE8 から 4.0 を取得しようとしています。