[フロントエンド] IE11の場合に、bodyタグに「ie11」というCSSクラスを付与するJavaScript実装
こんにちは、@yoheiMuneです。
公開サイトなどマークアップをしていると、まだまだ考慮が必要なIE11。それを判別するためのJavaScript実装を、今日はブログに書きたいと思います。
最後になりますが本ブログでは、フロントエンド、インフラ、サーバー、PHP、Swift、Python、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
公開サイトなどマークアップをしていると、まだまだ考慮が必要なIE11。それを判別するためのJavaScript実装を、今日はブログに書きたいと思います。
目次
IE11を判定するためのUserAgent
表示しているブラウザを判別するには、UserAgentを利用します。例えばWindows10に搭載されたInternet Explorer11 場合、UserAgentは以下のような値となります。// window.navigator.userAgent Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Geckoこの文字列を読み取って、IE11判定を行います。
IE11を判定するJavaScript
上記のUserAgentをJavaScriptから読み取り、IE11であるかを判定します。以下のように実装します。// IE11を判定する. // UserAgent を取得し、全て小文字にする. var ua = window.navigator.userAgent.toLowerCase(); // Internet Explorer であるかを判定する. var isIE = (ua.indexOf('msie') >= 0 || ua.indexOf('trident') >= 0); // もしIEの場合は、 if (isIE) { // IEのバージョンを、正規表現で取得する. var array = /(msie|rv:?)\s?([\d\.]+)/.exec(ua); var version = (array) ? array[2] : ''; // バージョンを整数の形式にする(11.0 -> 11) version = version.split('.')[0]; // IE11であるかを判定する. if (version === '11') { // IE11です! } }正規表現の部分が少し難解ですが、上記の処理で、IE11であるかを判定できます。
IE11の場合に、bodyに「ie11」というCSSクラスを付与する
最後に、bodyタグに「ie11」というCSSクラスを付与したいと思います。以下のように実装します。// 省略... // IE11であるかを判定する. if (version === '11') { // body タグに「ie11」クラスを追加する. window.document.body.classList.add('ie11'); } }jQueryを使う場合には、
$('body').addClass('ie11')
でもOKです。最後に
特に企業向けサービスでは、IE11はまだまだ無くならないので、引き続き対応が必要ですね〜。最後になりますが本ブログでは、フロントエンド、インフラ、サーバー、PHP、Swift、Python、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!