問題の
http://image.orange-book.com/web/js/styleswitcher.js (定番の
styleswitcher.js と区別するためにあえてこう書いています)ですが、
コード:
var isWebKit = (navigator.userAgent.match(/AppleWebKit/)) ? true : false;
のようにUser-Agent を判定して変数 isWebKit を設定し、
コード:
if (isWebKit) { /* Chrome用の切り替え処理 */ } else { /* それ以外のブラウザ用切り替え処理 */ }
のように書かれています。
しかし、
- Edge は User-Agent に "AppleWebKit" が含まれており、isWebKit = true 側の処理を通る。
- IE11の開発者ツールのエミュレーションで「ユーザーエージェント文字列」に「Google Chrome」を選択しても正常に表示する。
- IE11の開発者ツールのエミュレーションで「ドキュメントモード」を7、「ユーザーエージェント文字列」に「Internet Explorer 7」を選択し、デバッガ-で isWebKit を true に設定しても正常に表示する。
- IE11の開発者ツールのエミュレーションで「ドキュメントモード」を5、「ユーザーエージェント文字列」に「Internet Explorer 6」を選択すると、サイトに細かなスタイルの乱れが生じる。
ということがわかりました。
IE6対応してもそもそもサイトはきれいには表示できないなら、上記コードの else {} 部分は全く意味をなさない糞コードだったということです。
そして、Firefox はその糞コードの方を強制されながらも今までは
奇跡的に動いていたに過ぎなかった、と考えるべきでしょう。
現在のFirefox(特にFirefox Quantum を名乗ってから)は、過去のダメなコードを削り、様々な最適化により性能アップを図って目まぐるしく変わっている最中です。
古いAPIが動作しなくなるということもあるでしょうし、
最適化によりタイミングが変わって古い(間違った)やり方が通用しなくなるということもあるでしょう。
リリースノートに載ってなくてもいろいろ変化していることは十分に考えられます。