• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:IEのバージョンが7以下の際。ポップアップ表示)

JavaScriptを使ってブラウザのバージョンを判別し、メッセージウィンドをポップアップさせる方法

このQ&Aのポイント
  • JavaScriptを使用して、ブラウザのバージョンを判別し、メッセージウィンドをポップアップさせる方法を知りたいです。
  • ブラウザがIEであり、バージョンが7以下、またはIE8以上であり互換表示モードの場合にポップアップを表示したいです。
  • HTMLとJavaScriptの関連性について理解が不十分で、どこに返り値を返しているかが分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • Proof4
  • ベストアンサー率78% (151/192)
回答No.1

http://jisakupc-technical.info/programing/javascript/4514/ のページにあるスクリプトは関数として組み込まれることを前提としているようです。 つまり、function getBrowser(){ ...ページ内のプログラム... } としたうえで、JavascriptでgetBrowser()を呼び出せば返り値でブラウザ名が取得できます。 ブラウザの情報取得を独自で書くのもいいですが、ライブラリを利用するのもよいでしょう。platform.js (https://github.com/bestiejs/platform.js/) はその一つです。 <script src="https://cdnjs.cloudflare.com/ajax/libs/platform/1.3.5/platform.min.js"></script> として読み込むだけで platform.name にブラウザ名、platform.version にブラウザのバージョンが記録されます。 参考URLに詳しく書いてあるためここでは詳述しませんが、互換表示モードの検出は少々テクニカルなことをする必要がありそうです。

参考URL:
https://stackoverflow.com/questions/27912296/ie11-detect-whether-compatibility-view-is-on-via-javascript
makushimasu
質問者

補足

コメントありがとうございます。 このような外部ライブラリもあったんですね。 これも参考にさせていただきます。 このライブラリを使用した場合でも、やはりわからないのが実装方法です。 例えば、普通のプログラムだと、仮にウィンドを開かせる命令を「OPEN」としたとき、 IF platform.name=IE then open end となると思いますが、これをHTMLでどう書けばいいのかがわかりません。 かなり初歩的なご質問になってしまい申し訳ございませんが、いただけましたら幸いです。

その他の回答 (1)

  • Proof4
  • ベストアンサー率78% (151/192)
回答No.2

No.1の補足に対して回答します。 ざっと書いてみたところこのような感じになります。ライブラリのplatform.jsはIE11未満に対応していないため使えませんでした。 ---- <!DOCTYPE html> <html> <head>  <meta charset="UTF-8">  <script>   function IeVersion(){    // デフォルト値    var value = {     IsIE: false,     TrueVersion: 0,     ActingVersion: 0,     CompatibilityMode: false    };    // Tridentバージョン番号を取得    var trident = navigator.userAgent.match(/Trident\/(\d+)/);    if(trident){     value.IsIE = true;     // Tridentバージョン番号をIEのバージョン番号に変換     value.TrueVersion = parseInt(trident[1], 10) + 4;    }    // MSIE番号を取得    var msie = navigator.userAgent.match(/MSIE (\d+)/);    if(msie){     value.IsIE = true;     // UAからIEのバージョン番号を取得     value.ActingVersion = parseInt(msie[1]);    }else{     // IE11はEdgeモード     value.ActingVersion = value.TrueVersion;    }    // TridentとMSIEのバージョンの両方が取得できた時は比較    if(value.TrueVersion > 0 && value.ActingVersion > 0){     // 互換モードの時はTridentのバージョンとMSIEバージョンが異なる     value.CompatibilityMode = value.TrueVersion != value.ActingVersion;    }    return value;   }   function popup(){    // ポップアップを表示する関数    alert("対象のブラウザです!");   }   // これより下はページ読み込み時に即時実行されます   var ie = IeVersion();   if(ie.IsIE){    if(     ie.ActingVersion <= 7 ||     ie.ActingVersion > 7 && ie.CompatibilityMode    ){     popup();    }   }  </script> </head> <body> </body> </html> ※OKWaveの仕様上、インデントを全角スペースで表現しています。コピペの際はご注意ください。 JavascriptはVBAと多少文法が違う点がありますが、そこは少し調べれば問題ないでしょう。

makushimasu
質問者

お礼

大変親切なコメントどうもありがとうございます。 大変分かりやすく参考になりました。 文法違いのところは・・・なんとなく理解はできるので、今から詳細を調べさせていただき、しっかり覚えます。 なるほど、JavaScriptはページ実行時に「即時実行」されるわけですね。(と判断しました) 実装時は書く順番等は考えないと、同じようなものが被るとごちゃごちゃになりそうですね。 内容の方は先ほどテストさせていただきました。 しっかり動作していました。 ここまで作成していただいてまことに感謝の念を禁じえません。 本当にありがとうございます。 早速、明日このコードをもって、現場環境で試してみたいと思います。

関連するQ&A

専門家に質問してみよう