プロが教えるわが家の防犯対策術!

javaScript初心者です。よろしくお願い致します。

トップページ上部に配置している「fla01.swf」のFlashの動画を、一定期間(お正月期間の1/1~1/10まで)のみ、「fla02.swf」に自動で差し替わり、1/11になったらまた元の「fla01.swf」になるjavaScriptを作成したいと思います。

いろいろなサイトを検索しているのですが、サンプルを見つけられずにいます。
どなたか、ご存知でしたら教えてください。よろしくお願い致します。

A 回答 (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の日付関数を使用していますので、ユーザーの時間設定が違っている場合は、正確でなくなります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/27 13:35

fla_tag[0] = "<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="​

http://download.macromedia.com/pub/shockwave/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無視される。
エスケープしましょう。

この回答への補足

ご伝授、ありがとうございます!
早速、サイトを調べて作ってみたのですが、現在このような記述になっています。
何度も見直してみて、思い当たるところを記述し直してみたのですが、それでも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>';

補足日時:2008/12/25 17:43
    • good
    • 0

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

この回答への補足

何度も申し訳ありません。
ネットで掲載されていたscriptを参考に作ったのですが、
flashデータが表示されません。
配列変数の中にタグを入れれば、そのまま表示してくれると思うのですが、flashデータは特殊なのでしょうか?

function flaChange() {
vari;
varmonth;
varday;
vartoday;

varmaxFile = 2;

vardate = new Date();
varfla_data = new Array(maxFile);
varfla_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/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_data[1] = "0111";
fla_tag[1] = "<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cab … 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>

補足日時:2008/12/25 16:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!