- ベストアンサー
JavaScriptを使ってブラウザのバージョンを判別し、メッセージウィンドをポップアップさせる方法
- JavaScriptを使用して、ブラウザのバージョンを判別し、メッセージウィンドをポップアップさせる方法を知りたいです。
- ブラウザがIEであり、バージョンが7以下、またはIE8以上であり互換表示モードの場合にポップアップを表示したいです。
- HTMLとJavaScriptの関連性について理解が不十分で、どこに返り値を返しているかが分かりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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に詳しく書いてあるためここでは詳述しませんが、互換表示モードの検出は少々テクニカルなことをする必要がありそうです。
その他の回答 (1)
- Proof4
- ベストアンサー率78% (151/192)
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と多少文法が違う点がありますが、そこは少し調べれば問題ないでしょう。
お礼
大変親切なコメントどうもありがとうございます。 大変分かりやすく参考になりました。 文法違いのところは・・・なんとなく理解はできるので、今から詳細を調べさせていただき、しっかり覚えます。 なるほど、JavaScriptはページ実行時に「即時実行」されるわけですね。(と判断しました) 実装時は書く順番等は考えないと、同じようなものが被るとごちゃごちゃになりそうですね。 内容の方は先ほどテストさせていただきました。 しっかり動作していました。 ここまで作成していただいてまことに感謝の念を禁じえません。 本当にありがとうございます。 早速、明日このコードをもって、現場環境で試してみたいと思います。
補足
コメントありがとうございます。 このような外部ライブラリもあったんですね。 これも参考にさせていただきます。 このライブラリを使用した場合でも、やはりわからないのが実装方法です。 例えば、普通のプログラムだと、仮にウィンドを開かせる命令を「OPEN」としたとき、 IF platform.name=IE then open end となると思いますが、これをHTMLでどう書けばいいのかがわかりません。 かなり初歩的なご質問になってしまい申し訳ございませんが、いただけましたら幸いです。