Flash Plug-inとActiveXのバージョンを振り分ける [Edit]

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

自分の環境を確認
上記のスクリプトを実行
コードをダウンロード

コメント

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事