• ベストアンサー

日付が変わったらFlashのファイルを差し替える

javaScript初心者です。よろしくお願い致します。 トップページ上部に配置している「fla01.swf」のFlashの動画を、一定期間(お正月期間の1/1~1/10まで)のみ、「fla02.swf」に自動で差し替わり、1/11になったらまた元の「fla01.swf」になるjavaScriptを作成したいと思います。 いろいろなサイトを検索しているのですが、サンプルを見つけられずにいます。 どなたか、ご存知でしたら教えてください。よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

Flashのスクリプトでも、同様のことは可能みたいですが、こちらの方法はまったくわかりませんので置いておきます。 とりあえずjavascriptでの方法として簡単なのは、HTML内に <div id="flash1"> <object ~~通常時のフラッシュ</object> </div> <div id="flash2" style="display:none;"> <object ~~特殊日のフラッシュ</object> </div> のようにしておいて、必要に応じて表示/非表示を切り替える方法。 window.onload=function() { var d=new Date(); if (d.getMonth()*100 + d.getDate() < 11){ document.getElementById('flash1').style.display='none'; document.getElementById('flash2').style.display='block'; } } みたいな感じでしょうか。 この方法だと、両方とも読み込んでしまいますので、リソースをその分使ってはいます。(不要な方をremoveしてしまえば、なくなりますが) あるいは、HTMLには通常表示するものだけ記しておいて、 <div id="flash"> <object ~~通常時のフラッシュ</object> </div> DOMで<div>~</div>のinnerHTMLを入れ替えてしまう方法もありますね。どちらも似たようなものですが、こちらだとHTMLのソースをあまり変えなくてもすむし、スクリプトも外部スクリプトにしてしまえば、HTMLには読み込みの1行を追加するだけで切り替えできるというメリットがあるかも。 いずれにしろ、javascriptの日付関数を使用していますので、ユーザーの時間設定が違っている場合は、正確でなくなります。

noragoro
質問者

お礼

できました!すばらしい…! Flashの動画を差し替えるだけでも、いろいろと方法があるのですね。 コードで理解できない箇所も一部ありますが、追々勉強させていただこうと思います。 ますは、お正月が来るまでに間に合わせることができました。 本当にありがとうございました!(^^)

その他の回答 (2)

  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.2

fla_tag[0] = "<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="​http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab...​ width="770" height="128"><param name="movie" value="top2.swf" /><param name="quality" value="high" /><embed src="top2.swf" quality="high" pluginspage="​http://www.macromedia.com/go/getflashplayer"​ type="application/x-shockwave-flash" width="770" height="128"></embed></object>"; これ、 fla_tag[0] = "<object classid=" で区切られる。残り部分はエラーor無視される。 エスケープしましょう。

noragoro
質問者

補足

ご伝授、ありがとうございます! 早速、サイトを調べて作ってみたのですが、現在このような記述になっています。 何度も見直してみて、思い当たるところを記述し直してみたのですが、それでもFlashは表示されません。 今一度、教えていただければ幸いです。 fla_tag[0] = '<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http:\/\/download.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=6,0,29,0\" width=\"770\" height=\"128\"><param name=\"movie\" value=\"top2.swf\" \/><param name=\"quality\" value=\"high\" \/><embed src=\"top2.swf\" quality=\"high\" pluginspage=\"http:\/\/www.macromedia.com\/go\/getflashplayer\" type=\"application\/x-shockwave-flash\" width=\"770\" height=\"128\"><\/embed><\/object>';

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

日付によって配置される「絵」が変化するscriptを参考に、それをflashのタグに転用したら良いよ。

noragoro
質問者

補足

何度も申し訳ありません。 ネットで掲載されていたscriptを参考に作ったのですが、 flashデータが表示されません。 配列変数の中にタグを入れれば、そのまま表示してくれると思うのですが、flashデータは特殊なのでしょうか? function flaChange() { var i; var month; var day; var today; var maxFile = 2; var date = new Date(); var fla_data = new Array(maxFile); var fla_tag = new Array(maxFile); if ((month = (date.getMonth() + 1)) < 10) { month = "0" + month; } else { month += ""; } if ((day = date.getDate()) < 10) { day = "0" + day; } else { day += ""; } today = month + day; fla_data[0] = "0101"; fla_tag[0] = "<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="770" height="128"><param name="movie" value="top2.swf" /><param name="quality" value="high" /><embed src="top2.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="770" height="128"></embed></object>"; fla_data[1] = "0111"; fla_tag[1] = "<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="770" height="128"><param name="movie" value="top.swf" /><param name="quality" value="high" /><embed src="top.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="770" height="128"></embed></object>"; for (i = 0; i < maxFile; i++) { if (fla_data[i] > today) { if (i == 0) { i = maxFile; } break; } } i--; document.write("fla_tag[i]"); } ※実際に表示させる箇所に記述 <SCRIPT LANGUAGE="JavaScript"> <!--// flaChange(); //--> </SCRIPT>

関連するQ&A

専門家に質問してみよう