- ベストアンサー
flash非対応の場合のhtml表示
初心者です。 ページの左側にflashでナビゲーションを作りました。 右側は文章です。 flash非対応の人が見た場合に、 自動でhtmlで作ったナビゲーションを 表示させる方法はありますでしょうか? 別にHTML版を用意するのを避けたいのですが。 JavaScriptで振り分けて直接ナビゲーションを読み込む方法などは難しいでしょうか? またflash非対応用のcssを読み込ませることはできるのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
JavaScriptやVBScriptの内容を理解している者ではありません。 またCSSに関してもよくわかっておりません。 Flash4やFlash5の頃には確かに,質問者さまが書かれているように, Flashのパブリッシュの設定で,HTMLタブを選択し, テンプレートの設定を「Flash ○ 代替イメージ付き」というのにしてGIFとともにパブリッシュすると, プラグインの有無をJavaScriptによって検出し,無い場合は代替GIFを表示させるようなHTMLがパブリッシュされていました。 以下はFlash4によって,「sample.swf」というSWFとともに,GIFとHTMLをパブリッシュしたときのHTMLソースです。 ====================== <HTML> <HEAD> <TITLE>sample</TITLE> </HEAD> <BODY bgcolor="#FFFFFF"> <!-- URL's used in the movie--> <!-- text used in the movie--> <!-- image map --> <MAP NAME="sample"> </MAP> <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0" ID=sample WIDTH=550 HEIGHT=400> <PARAM NAME=movie VALUE="sample.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FFFFFF> <SCRIPT LANGUAGE=JavaScript> <!-- var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0; if ( plugin && parseInt(plugin.description.substring(plugin.description.indexOf(".")-1)) >= 4 ) { // Check for Flash version 4 or greater in Netscape document.write('<EMBED src="sample.swf" quality=high bgcolor=#FFFFFF '); document.write(' swLiveConnect=FALSE WIDTH=550 HEIGHT=400'); document.write(' TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">'); } else if (!(navigator.appName && navigator.appName.indexOf("Netscape")>=0 && navigator.appVersion.indexOf("2.")>=0)){ // Netscape 2 will display the IMG tag below so don't write an extra one document.write('<IMG SRC="sample.gif" WIDTH=550 HEIGHT=400 BORDER=0>'); } //--> </SCRIPT> <NOEMBED><IMG SRC="sample.gif" WIDTH=550 HEIGHT=400 usemap="#sample" BORDER=0></NOEMBED> <NOSCRIPT><IMG SRC="sample.gif" WIDTH=550 HEIGHT=400 usemap="#sample" BORDER=0></NOSCRIPT> </SCRIPT> </OBJECT> </BODY> </HTML> ====================== その後は, Flashのパブリッシュの設定で,HTMLタブを選択し, テンプレートの設定を「Flash ○○を検知」というのにしてパブリッシュするものに変わりました。 現在のFlash8では, Flashのパブリッシュの設定で,HTMLタブを選択し, テンプレートの下の,「Flashのバージョンを検出」というのにチェックを入れてパブリッシュすると, プラグインの有無ではなく,プラグインのバージョンを検出して,代替HTMLを表示させるものに変わりました。 以下はFlash8によって,「sample2.swf」というSWFとともに,HTMLをパブリッシュしたときのHTMLソースです。 ====================== <!-- saved from url=(0013)about:internet --> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>sample2</title> <script language="JavaScript" type="text/javascript"> <!-- // ----------------------------------------------------------------------------- // グローバル // Flash のメジャーバージョンが必要です var requiredMajorVersion = 8; // Flash のマイナーバージョンが必要です var requiredMinorVersion = 0; // 必要な Flash のバージョン var requiredRevision = 0; // サポートされている JavaScript のバージョン var jsVersion = 1.0; // ----------------------------------------------------------------------------- // --> </script> <script language="VBScript" type="text/vbscript"> <!-- // Flash Player ActiveX コントロールのバージョン情報を検出するには、Visual Basic ヘルパーが必要です Function VBGetSwfVer(i) on error resume next Dim swControl, swVersion swVersion = 0 set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i)) if (IsObject(swControl)) then swVersion = swControl.GetVariable("$version") end if VBGetSwfVer = swVersion End Function // --> </script> <script language="JavaScript1.1" type="text/javascript"> <!-- // クライアントのブラウザのタイプを検出 var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; jsVersion = 1.1; // Flash Player プラグインのバージョン情報を検出するには、JavaScript ヘルパーが必要です function JSGetSwfVer(i){ // プラグイン配列内の Flash プラグインについて NS/Opera バージョンが 3 以上かどうかを確認します if (navigator.plugins != null && navigator.plugins.length > 0) { if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; descArray = flashDescription.split(" "); tempArrayMajor = descArray[2].split("."); versionMajor = tempArrayMajor[0]; versionMinor = tempArrayMajor[1]; if ( descArray[3] != "" ) { tempArrayMinor = descArray[3].split("r"); } else { tempArrayMinor = descArray[4].split("r"); } versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0; flashVer = versionMajor + "." + versionMinor + "." + versionRevision; } else { flashVer = -1; } } // MSN/WebTV 2.6 は Flash 4 をサポートしています else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; // WebTV 2.5 は Flash 3 をサポートしています else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; // それ以前のバージョンの WebTV は Flash 2 をサポートしています else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; // 他のすべての状況では検出できません else { flashVer = -1; } return flashVer; } // パラメータを指定せずに呼び出した場合、この関数は浮動小数値を返します。 // これは、Flash Player のバージョンまたは 0.0 になります。 // 例 : Flash Player 7r14 の場合は 7.14 を返します // reqMajorVer を指定して呼び出した場合、reqMinorVer、reqRevision は、それ以上のバージョンが使用可能なときには true を返します function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) { reqVer = parseFloat(reqMajorVer + "." + reqRevision); // 最新のバージョンを見つけるまで、バージョンを遡ってループします for (i=25;i>0;i--) { if (isIE && isWin && !isOpera) { versionStr = VBGetSwfVer(i); } else { versionStr = JSGetSwfVer(i); } if (versionStr == -1 ) { return false; } else if (versionStr != 0) { if(isIE && isWin && !isOpera) { tempArray = versionStr.split(" "); tempString = tempArray[1]; versionArray = tempString .split(","); } else { versionArray = versionStr.split("."); } versionMajor = versionArray[0]; versionMinor = versionArray[1]; versionRevision = versionArray[2]; versionString = versionMajor + "." + versionRevision; // 7.0r24 == 7.24 versionNum = parseFloat(versionString); // メジャーバージョンは要求されたメジャーバージョン以上であり、かつマイナーバージョンは要求されたマイナーバージョン以上の場合 if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) { return true; } else { return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false ); } } } return (reqVer ? false : 0.0); } // --> </script> </head> <body bgcolor="#ffffff"> <!--ムービーで使用されている URL--> <!--ムービーで使用されているテキスト--> <script language="JavaScript" type="text/javascript"> <!-- var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision); if(hasRightVersion) { // 使用可能なバージョンが検出された場合 var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + 'width="550" height="400"' + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">' + '<param name="movie" value="sample2.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />' + '<embed src="sample2.swf" quality="high" bgcolor="#ffffff" ' + 'width="550" height="400" name="sample2" align="middle"' + 'play="true"' + 'loop="false"' + 'quality="high"' + 'allowScriptAccess="sameDomain"' + 'type="application/x-shockwave-flash"' + 'pluginspage="http://www.macromedia.com/go/getflashplayer">' + '<\/embed>' + '<\/object>'; document.write(oeTags); // Flash ムービーの埋め込み } else { // Flash が古すぎるか、プラグインを検出できません var alternateContent = '代替 HTML コンテンツをここに配置する必要があります。' + 'このコンテンツには Macromedia Flash Player が必要です。' + '<a href=http://www.macromedia.com/go/getflash/>Flash を取得</a>'; document.write(alternateContent); // Flash 以外のコンテンツを挿入する } // --> </script> <noscript> // スクリプトをサポートしていないブラウザ、またはスクリプトが無効になっているブラウザ用に代替コンテンツを提供します。 代替 HTML コンテンツをここに配置する必要があります。 このコンテンツには Macromedia Flash Player が必要です。 <a href="http://www.macromedia.com/go/getflash/">Flash を取得</a> </noscript> </body> </html> ====================== Flashのプラグインが入っていないPCより,JavaScriptを無効にしているPCの方が多いと思います。 だから,どういう方法がいいのかは良くわかりませんが,上記ソースが参考になれば参考にしてみてください。 またFlashをお持ちでしたら,パブリッシュ設定のHTMLの設定を研究されると,もっと楽にはできると思います。 参考URL↓ (この辺で研究してみてください) http://www.google.co.jp/search?hl=ja&q=Flash+%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E6%A4%9C%E5%87%BA&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
その他の回答 (2)
- arufa2005
- ベストアンサー率12% (4/31)
フラッシュプレーヤーは自作パソコンではない限りほとんどのパソコンに入っていると思われます。
お礼
ごもっともです。 だったらFlashで作るなって話ですよね。。。
- みずの(@mizuno3)
- ベストアンサー率73% (192/263)
Macromedia http://www.macromedia.com/jp/ ここの17行目~41行目とかが参考になるかも知れません。
お礼
ご丁寧に長いソースありがとうございます!! お返事が遅れてすみませんでした。 試しにやってみます。 ありがとうございました。