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未満という設定です。