typoする毎日

中小いっと企業にいながら、サークル的なやつをやってる人の備忘録

UserAgentのお話(互換表示とかなんとか)

仕事にて。
ブラウザの種別によって機能を切り替えるとかなんとかっていう、よくあるパターンの内容が仕様として確定したため、旧来から使っていたソースを使用して対応した。
(まあよくあるこんなタイプの)


javaScriptで対応ブラウザ判定 - Qiita


テストしてよしよし。リリースしておkおk。
そーんな感じでやってたら、納品先からお電話。

「機能が切りかれれてない」

おろ?何故に?

////////////////////////////////////////////////////

今回の案件の要件はIE7~IE11。

IE11にも対応してるからよしよし、と思っていたんだけども、
上記のようなソースにおいて加味してなかった部分があって。
それは【互換モード】。


納品先のお客様というのは、社内システムがたくさんある会社。
そのため、IE11に対応していない作りのあるシステムもあるらしく、
IE11においては基本的に「IE7の互換モード」で動くとのこと。

////////////////////////////////////////////////////

互換モードで動いているとなると、
tridentは7なんだけどもMSIEは7.Xなわけである。

上記のようなソースだと、先にIEのバージョン判別をしてしまうため、
MSIE 7.Xの分岐に先に入り込んでしまうわけだ。

今回は、IE11に対応するために、tridentの確認分岐を先に置くという手法で対応したが、
場合によっては下記のページもタメになるみたいだ。


IE11のユーザエージェント問題 - 開発者側でできる対策 (判定方法の変更/互換性モードの利用) - ふろしき.js