いつもお世話になっています。
3つあるFLASHファイルを、
1.ページ読み込み時にはランダム
2.画像ボタンへのmouseoverで対象に変化
のようにしたいのですが、2が上手く行きません。
flashlist[num]を変化させたところ、ページ全体がオブジェクトだけになってしまいました。
何か良い方法はないでしょうか。
なお、マイクロソフトの月例パッチ(ActiveX)対策で、objectをJavaScriptで書き出しています。
/* HTMLファイルのボタン・FLASH部分 */
<script type="text/javascript" language="javascript" src="flash.js"></script>
<img src="button1.gif" mouseover="flashlist(0)" />
<img src="button2.gif" mouseover="flashlist(1)" />
<img src="button3.gif" mouseover="flashlist(2)" />
/* flash.js */
var flashlist = new Array("flash1.swf","flash2.swf","flash3.swf");
var num = Math.floor((Math.random() * 100)) % flashlist.length;
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cab … >');
document.write('<param id="movie" value="' + flashlist[num] + '" />');
document.write('<embed src="' + flashlist[num] + '"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash"></embed>')
document.write('</object>');
No.7ベストアンサー
- 回答日時:
これで動くと思います。
少々長いですが……。IE7β2、Firefox1.5.0.3、Opera8.54(何れもWindows版)で動作確認しました。
*JavaScriptファイル
var flashlist = new Array("flash1.swf","flash2.swf","flash3.swf");
var num = Math.floor((Math.random() * 100)) % flashlist.length;
var cflash;
var object;
var param;
var embed;
document.write('<div id="changeflash" style="width:589px;height:231px;">');
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cab … style="width:589px;height:231px;">');
document.write('<param name="src" value="' + flashlist[num] + '" />');
document.write('<embed id="movie2" src="' + flashlist[num] + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" style="width:589px;height:231px;"></embed>');
document.write('</object></div>');
function changeflash(flash){
if(flash!=num){
num=flash;
if(document.all && document.all("changeflash").innerHTML){
//IE向け処理
cflash=document.all("changeflash");
cflash.innerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cab … style="width:589px;height:231px;"><param name="src" value="'+flashlist[num]+'" /><embed id="movie2" src="' + flashlist[num] + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" style="width:589px;height:231px;"></embed></object></div>';
}
else if(document.getElementById){
//標準準拠仕様
cflash=document.getElementById("changeflash");
cflash.removeChild(document.getElementsByTagName("object").item(0));
object=document.createElement("object");
param=document.createElement("param");
embed=document.createElement("embed");
object.setAttribute("classid","clsid:D27CDB6E-AE6D-11cf-96B8-444553540000");
object.setAttribute("codebase","http://download.macromedia.com/pub/shockwave/cab …
object.setAttribute("style","width:589px;height:231px");
param.setAttribute("name","src");
param.setAttribute("value",flashlist[num]);
embed.setAttribute("src",flashlist[num]);
embed.setAttribute("type","application/x-shockwave-flash");
embed.setAttribute("pluginspage","http://www.macromedia.com/go/getflashplayer");
embed.setAttribute("style","width:589px;height:231px");
object.appendChild(param);
object.appendChild(embed);
cflash.appendChild(object);
}
}
}
*XHTMLファイル
【前略】
<img src="button1.gif" alt="ボタン1" title="FLASH1" onmouseover="changeflash(0)" />
<img src="button2.gif" alt="ボタン2" title="FLASH2" onmouseover="changeflash(1)" />
<img src="button3.gif" alt="ボタン3" title="FLASH3" onmouseover="changeflash(2)" />
<script type="text/javascript" src="./flash.js"></script>
【後略】
No.5
- 回答日時:
うっかりしてました。
(汗mouseoverではなくonmouseoverでした。
上手くいくはずだったんですが、どうも反映されないようです。
document.getElementById("movie").setAttribute("value",flash);
document.getElementById("movie2").setAttribute("src",flash);
を
document.getElementById("object").innerHTML='<param id="movie" value="' + flash + '" /><embed id="movie2" src="' + flash + ' "pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>';
に変更し、次に
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cab … >');
を
document.write('<object id="object" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cab … >');
に変更してください。
不本意ながらinnerHTMLを使いましたが、これで上手くいくはずです。細かい箇所はこれを応用してください。
何度もありがとうございます。
重ね重ね本当に心苦しいのですが、ステータスバーにエラーが表示されて、変更されません…
試作品は以下のような形です。
■ HTMLファイル
<html>
<head>
<title></title>
</head>
<body>
<div>
<img src="button1.gif" alt="ボタン1" onmouseover="changeflash(flashlist[0])" />
<img src="button2.gif" alt="ボタン2" onmouseover="changeflash(flashlist[1])" />
<img src="button3.gif" alt="ボタン3" onmouseover="changeflash(flashlist[2])" />
<script type="text/javascript" language="javascript" src="flash.js"></script>
</div>
</body>
</html>
■ JavaScriptファイル
var flashlist = new Array("images/flash/sc_tpointerface_sf.swf","images/flash/sc_tpointerface_scj.swf","images/flash/sc_tpointerface_scb.swf");
var num = Math.floor((Math.random() * 100)) % flashlist.length;
document.write('<object id="object" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cab … width="589" height="231">');
document.write('<param name="movie" value="' + flashlist[num] + '" />');
document.write('<embed id="movie2" src="' + flashlist[num] + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>');
document.write('</object>');
function changeflash(flash){
if(document.getElementById){
document.getElementById("object").innerHTML='<param id="movie" value="' + flash + '" /><embed id="movie2" src="' + flash + ' "pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>';
}
}
No.4
- 回答日時:
すいません。
<img src="button1.gif" alt="ボタン1" mouseover="changeflash(flashlist(0))" />
<img src="button2.gif" alt="ボタン2" mouseover="changeflash(flashlist(1))" />
<img src="button3.gif" alt="ボタン3" mouseover="changeflash(flashlist(2))" />
ではなく、
<img src="button1.gif" alt="ボタン1" mouseover="changeflash(flashlist[0])" />
<img src="button2.gif" alt="ボタン2" mouseover="changeflash(flashlist[1])" />
<img src="button3.gif" alt="ボタン3" mouseover="changeflash(flashlist[2])" />
でした。
ありがとうございます。
お返事が遅くなってしまい、申し訳ありません。
ご教示いただいた内容を試してみたのですが、マウスオーバーしても反応がなく…
関数の位置をはじめに持ってきたり最後に持ってきたりしてみたのですが、何かおかしなことをしているんでしょうか。
追伸:
トップページFLASHについては私もまさにその通りだと思うのですけれど、会社の方針なので如何とも(苦笑)
No.3
- 回答日時:
flashlist:
var flashlist = new Array("flash1.swf",....);
........~~~~~~~
<img src="button1.gif" onmouseover="flashlist(0)" />
............................................................................~~~~~~~
No.2
- 回答日時:
document.write()ではページの一部だけを書き換えることは出来ません。
DOMを利用してください。document.write('<embed src="' + flashlist[num] + '"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash"></embed>')
まずここを、
document.write('<embed id="movie2" src="' + flashlist[num] + '"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash"></embed>');
と書き換えてください。
次に、新しい関数を作成します。
function changeflash(flash){
if(document.getElementById){
document.getElementById("movie").setAttribute("value",flash);
document.getElementById("movie2").setAttribute("src",flash);
}
}
最後に、
<img src="button1.gif" alt="ボタン1" mouseover="changeflash(flashlist(0))" />
<img src="button2.gif" alt="ボタン2" mouseover="changeflash(flashlist(1))" />
<img src="button3.gif" alt="ボタン3" mouseover="changeflash(flashlist(2))" />
とすれば完了です。
なお、あまり重いFLASHは使わない方が良いでしょう。特にトップページの場合は。この手のスクリプトは、ナローバンドな人には嫌がられがちですので。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c++std::string型をTCHARに変換...
-
フォームに入力された値により...
-
ランダムに流れるMIDIを止める
-
JSPでの画像ファイル表示
-
同一ページ内で、任意の文字列...
-
フッターの位置を一番下に表示...
-
クリックで色変更後に既に変更...
-
画面の表示位置を指定させて表...
-
スクロール可能なチェックボックス
-
MAX関数を使ってからLEFT JOIN...
-
特定の画像を非表示にする方法
-
Ctrl+F(検索)の窓を出したいの...
-
外部ファイルにしたら文字化け...
-
textareaに画像を表示したい
-
画像クリックで別の場所の画像...
-
【jQuery】2分割レイアウトで、...
-
jQueryのアコーディオンメニュ...
-
jQueryでサーバー上のファイル...
-
ネストされたチェックボックス...
-
デフォルト非表示にしたい。【t...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c++std::string型をTCHARに変換...
-
画面が真っ白になるのはどうして?
-
JSPでの画像ファイル表示
-
クリックして変更した画像を他...
-
画像をクリックしたら別ウイン...
-
フォームに入力された値により...
-
日替わりで画像を変更したい
-
htmlで、たくさんのgif画像を、...
-
HPで写真をクリックすると次の...
-
2箇所の画像をランダムに複数表示
-
JavaScriptのhistory.back(戻...
-
画像クリックした後別ウィンド...
-
ランダムに画像を表示し、ポッ...
-
Javascriptで画像を水面のよう...
-
イメージマップでのマウスオーバー
-
javascriptで複数の画像をラン...
-
C言語のポインタ表現
-
クリックした自身の画像を別画...
-
クリックするたびに画像を変える
-
画像をクリックすると音が鳴り...
おすすめ情報