フラッシュを利用しているサイト向けに、ブラウザがフラッシュに対応しているかどうかを判定するJAVAスクリプトです。
最近ではウェブサイトにフラッシュを利用する事が多くなりました。
フラッシュはアニメーションGIFに較べて軽くなる事が多く、またより多彩な表現が可能です。
しかしながら、フラッシュはあくまでもプラグインであり、ウェブの基本的な技術とは言えません。
このため、プラグインを入れていない環境や入れられない環境では、何らかのトラブルが起こる可能性があります。
この対策としては、プラグインに対応している環境かどうかを判断して、対応している場合に限りフラッシュコンテンツを提供する事でしょう。
この目的には、JAVAスクリプトが最も簡便で確実な方法と言えます。
ネットスケープ 3.x以外で、スクリプトを実行出来て且つフラッシュを表示出来る環境なら、フラッシュが表示されている事でしょう。
ネットスケープ 3.xまたはフラッシュが表示出来ないグラフィカルな環境では、フラッシュの代りに静止GIF画像が表示されます。
JAVAスクリプトが使えない場合は、静止GIFとなります。
フラッシュに対応しているかどうかを調べるスクリプト「CheckIfFlashEnabled.js」は以下の通りです。
fflag=0;if (document.layers || document.all || document.getElementById) {if (document.all && !window.opera && navigator.useAgent.indexOf('Win')>-1) {document.write('<scr' + 'ipt type="text/vbscript"\> \n');document.write('on error resume next \n');document.write('fflag=( IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6")))\n');document.write('</scr' + 'ipt> \n');}else if (navigator.plugins['Shockwave Flash']) fflag=1;}if (fflag==0)document.write('<div><img alt="" src="../../../SiteBanner.GIF" width="200" height="40" /></div>');else {if (document.all && !window.opera)document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="200" height="40">'+'<param name="movie" value="SiteBanner.swf" />'+'<param name="wmode" value="transparent" />'+'<param name="quality" value="high" />'+'</object>'+'');elsedocument.write('<object type="application/x-shockwave-flash" data="SiteBanner.swf" width="200" height="40">'+'<param name="wmode" value="transparent" />'+'<param name="quality" value="high" />'+'</object>'+'');}
一方、HTML文書側はこのようになっております(今回は、特に仕掛けがある訳ではありませんが、JAVAスクリプトに対応していない環境での対策なども示す必要があるため解説しております)。
<table summary="ネットスケープ 4.xでの表示崩れ対策のテーブルです。" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td><script type="text/javascript" src="CheckIfFlashEnabled.js"></script><noscript><div><img alt="グラフィカルな環境では、ここにフラッシュか画像が表示されます。" src="../../../SiteBanner.GIF" width="200" height="40" /></div></noscript></td></tr></tbody></table>
<noscript>要素で、スクリプトが実行出来無い場合にGIF画像を表示させているのが分かります。
尚、<table>要素の内容となっているのは、ネットスケープ4.xでのスタイル崩れ対策です。
このスクリプトの流れは、以下のようになります。
fflag=0;if (document.layers || document.all || document.getElementById) {if (document.all && !window.opera && navigator.useAgent.indexOf('Win')>-1) {document.write('<scr' + 'ipt type="text/vbscript"\> \n');document.write('on error resume next \n');document.write('fflag=( IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6")))\n');document.write('</scr' + 'ipt> \n');}else if (navigator.plugins['Shockwave Flash']) fflag=1;}
まず、フラッシュ対応かどうかの情報を変数fflagにて表す事にします。
この変数はフラッシュ対応なら0で無い数、非対応なら0となります。
ネットスケープ 3.xなどの旧いブラウザでは、現在のフラッシュを表示させようとするとブラウザごと落ちるものがあるようです。
このため、ネットスケープ 4.x以降のブラウザのみフラッシュ対応かどうかを判定する事にします。
まず、document.layers, document.allまたはdocument.getElementByIdがあれば旧式で無いブラウザだと分かります。
ところで、ウィンドウズ版のインターネットエクスプローラではVBスクリプトを用いないとプラグインに関する情報が得られません。
このため、インターネットエクスプローラの場合はVBスクリプトを用いて一律にフラッシュ対応と判断します。
インターネットエクスプローラである事を調べるには、ブラウザとオブジェクトの関係にあるように、document.allが存在して且つwindow.operaが存在しない場合となります。
この場合、VBスクリプトをdocument.writeで書き出し、これによりフラッシュに関するオブジェクトがあるかどうかを判定します。
"ShockwaveFlash.ShockwaveFlash.6"」の後ろの数字を変える事で、対応ヴァージョンを変える事が出来ます。インターネットエクスプローラ以外では、JAVAスクリプトでプラグインを調べられます。
プラグインに関する情報は、navigator.pluginsに配列の形で納められており、'Shockwave Flash'を名前に持つ要素があれば対応している事が分かります。
こうして得られた情報を元に、フラッシュなり画像なりを出力するHTMLを書き出しましょう。
if (fflag==0)document.write('<div><img alt="" src="../../../SiteBanner.GIF" width="200" height="40" /></div>');else {if (document.all && !window.opera)document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="200" height="40">'+'<param name="movie" value="SiteBanner.swf" />'+'<param name="wmode" value="transparent" />'+'<param name="quality" value="high" />'+'</object>'+'');elsedocument.write('<object type="application/x-shockwave-flash" data="SiteBanner.swf" width="200" height="40">'+'<param name="wmode" value="transparent" />'+'<param name="quality" value="high" />'+'</object>'+'');}
Copyright ©平成17年-平成24年 さいたま・しらぎくさいと 版権所有
marguerite.site@gmail.com