Flash Plug-inとActiveXのバージョン振り分けを行う、JavaScriptを紹介します。
<script language="JavaScript"> <!-- var plugin; var plugin_ver; var url_Val="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"; //バージョンを振り分けて、URLにmacromediaを設定 function brVal() {//関数を定義 var brAgent = navigator.userAgent.toLowerCase(); this.brVer = parseInt(navigator.appVersion); this.NC = ((brAgent.indexOf('mozilla') != -1) && ((brAgent.indexOf('spoofer') == -1) && (brAgent.indexOf('compatible') == -1))); this.IE = (brAgent.indexOf("msie") != -1); this.NC4 = (this.NC && (this.brVer >= 4));//必要ありませんがNC4.0以上も参照 this.IE4 = (this.IE && (this.brVer >= 4)); this.macIE =(brAgent.indexOf("mac") != -1 && (brAgent.indexOf("msie 4.5") != -1 || brAgent.indexOf("msie 4.0") != -1 )); //macIEとしてありますがバージョン5未満です バージョン5 以上からPlug-inを参照できます。 this.win = (brAgent.indexOf("win") != -1); }//関数定義のブロック終了 var brID = new brVal(); //作成したコンストラクタ関数 if(!brID.macIE && !(brID.win && brID.IE)){ plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0; if(plugin){plugin_ver=parseInt(plugin.description.substring(plugin.description.indexOf(".")-1));} if((plugin_ver < 3) || !plugin){location.href=url_Val;} }if(brID.macIE || (brID.win && brID.IE && !brID.IE4)){location.href=url_Val;} //Plug-inを参照できるブラウザのPlug-inバージョンとPlug-inの有無を参照。 macIE5未満又はWinIEはPlug-inバージョンを参照しようとするとエラーになりますので ここで振り分けています 赤色の3の数字がバージョンの振り分け分岐です いろいろ変えてためしてください。 //--> </script> //JavaScriptでWinIE用にVBScriptを書き出します。 FlashのActiveXのバージョンを参照します。 MacIE4.5等のエラーを回避するためです <script language="JavaScript"> <!-- if(brID.IE4 && brID.win){ document.write('<SCRIPT LANGUAGE="VB'+'Script"\>\n'); document.write('on error resume next \n'); document.write('Dim URL_Link \n'); document.write('Dim Flash \n'); document.write('Dim get_ver \n'); document.write('URL_Link="'+url_Val+'"\n'); document.write('Flash=IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash")) \n'); document.write('get_ver=Left(Hex(Int(CreateObject("ShockwaveFlash.ShockwaveFlash").FlashVersion)),1)\n'); document.write('If (Flash) Then \n'); document.write('If get_ver<3 Then \n'); document.write('location.href=URL_Link \n'); document.write('End If \n'); document.write('Else \n'); document.write('location.href=URL_Link\n'); document.write('End If\n'); document.write('</S'+'CRIPT\> \n');} //--> </script>
*注記
navigator.appVersion等でブラウザのバージョンを参照しますとIE等では偶数の数字しか
参照できません。navigator.userAgentt.indexOfで調べれば正確に参照できます。
またActiveXのFlashバージョンは奇数しか参照できません。
get_ver<3としてますのはバージョン3未満という設定です。