LoginSignup
5
2

More than 1 year has passed since last update.

IE非対応表示に関してベストプラクティスを考える

Last updated at Posted at 2021-06-09

🙁課題

IEの利用者向けに「IEは非対応です。別のブラウザをお使い下さい」という表示をしようと思います。ところがIEの判定ルーチン部分や画面表示に関してはIEで処理できる必要があり、Webpack導入済みの環境で真面目にこれをやろうとすると、IE対応の必要なファイルとそうでないファイルを切り分けて云々……とする必要があります。
IE判定なんて複雑なものでもなし、告知画面そのものは所謂ペライチでJSすら使わないレベルなのに、これは面倒or本末転倒……っていうのが今回解決したい課題となります。

👴結論

そもそもIE判定及び告知画面についてはWebpackで扱わず、手打ちのHTML,CSS,JSファイルを作ってwebpackの出力先フォルダに突っ込んだ方が楽なのでは。 babel関係も不要で、Gitの無視ファイル設定だけちょこっと弄るだけですし。

手順

1. IE判定を行い、非対応の告知画面ページへ遷移するルーチンを書いたJSファイルを作る

const isIe = function (userAgent) {
  return (userAgent.indexOf('msie') != -1 || userAgent.indexOf('trident') != -1)
}
if (isIe(window.navigator.userAgent.toLowerCase())) { location.href = "【警告画面のHTMLファイルのパス】" }

もちろん、ここでDOMを書き換えて告知画面を出してもいいのですが、

  • 何かの拍子にwebpackでバンドルしたjsと干渉しそうで不安
  • 書き換え処理のJSもIE11対応する必要がある
  • 告知画面のHTMLファイルは要件の性質上、直書きできる可能性が高く、この場合エディタの補完が効く

という点を考慮して、告知画面は別ファイルに切り出してます。
それからIE11でもconstは使えます。

2. メインとなるHTMLファイルのheadタグ内にWebpackで生成したファイルより先に記述する

<head>
  <script type="text/javascript" src="【IE判定&遷移ルーチン(要IE11対応)】.js"></script>
  <script type="text/javascript" src="【Webpackで作ったファイル】.js"></script>
</head>

3.非対応の告知画面はざっくり手打ちの静的ファイルだけで構成

「IEは非対応です。別のブラウザ使ってください」という旨の表示以外何もしようがないので、手打ちHTMLとCSSだけで何とかなる範疇かと。HTMLファイル内に全部書いてしまってもいいかもしれませんね。

もうちょっとユーザーフレンドリーにするなら、エラー画面を見ているユーザーはWindowsユーザーかつEdgeをインストール済みであることが期待できるので、「Edgeで開く」リンクを置いておくといいと思います。
マイナーなテクニックですが、Windowsの場合、レジストリにパラメータを登録しておくと、ブラウザからURLスキームを使ってインストールしてあるソフトを呼び出すことができるんですね。
そしてedgeに関してはインストールした時に登録済みなので、

<a href="microsoft-edge:【edgeで開かせたいURL】">Edgeで開く</a>​​​​​

こういうリンクを踏ませるだけでedgeで開かせることができます。
ただまぁメジャーなChromeじゃなくてマイナーなEdgeを薦めるのはどうか、という葛藤もありますが、IE11を使ってるユーザー相手ですとねぇ……。B2BでITとは縁遠い業界相手になるほど刺さるかと。

備考

告知画面の表示ですが手抜きしすぎて、適当な背景+画面のど真ん中に「Internet Explorerはサポート外です。別のブラウザをお使い下さい」という表示を出すだけだと、怪しげなフィッシングサイトに飛ばされた感が半端ないです😅 背景ぐらいは通常サイトに揃えるなり、一緒に会社ロゴを表示するなり、多少なり公式アピールをした方がいいです。

参考

使用してるブラウザを判定したい - Qiita
Microsoft EdgeでWebページを開くインターネットショートカット 初心者備忘録

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2