• ベストアンサー

確認ダイアログとFLASH

(javascriptのカテゴリーから移してきました) ページのロード時に、確認ダイアログを出すように設定しています。 キャンセルをクリックするとそのページはcloseし、OKを押すと確認ダイアログが消えるように作っています。 今回、このページにFLASH(powerbulletで作ったもの)を貼り付けました。 NNとFirefoxでは、確認ダイアログが消えてから(OKがクリックされたら)FLASHがロードされますが、IEでは、ダイアログが出ている内に、FLASHのロードが始まってしまいます。 FLASH自体が、『フェードイン・フェードアウト』の動きをしているので、ダイアログの中身を読んでいる間に、ロードが終ってしまいます。 これは、私のスクリプトの書き方が悪いのでしょうか? 何処を書き直せば、IEでも確認ダイアログの動作完了後にFLASHがロードされるようになるでしょうか? ↓ここからがソースです。 <HTML> <HEAD> <TITLE>~</TITLE> <SCRIPT TYPE="text/javascript"> <!-- function disp() { if(window.confirm('テスト')) {return true;} else {self.close();} } // --> <!-- function ChangePage(){location.href="■■■";} // --> </SCRIPT> </HEAD> <BODY onLoad="disp(); setTimeout('ChangePage()',1000*120)"> <object> <!-- ■■■ここに、powerbulletで作ったFLASHのタグ(?)が入っています■■■ --> </object> </BODY> </HTML> (色々必要なさそうなタグを省いたので、もし不明な所が有れば聞いて頂けますか?)

  • dd90
  • お礼率76% (16/21)
  • Flash
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • N_A_O
  • ベストアンサー率66% (37/56)
回答No.3

動作確認用URLが削除されたのでスクリプト <SCRIPT TYPE="text/javascript"> <!-- function changeSWF(swfName){ var swfMovie = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="250" height="125"><param name=movie value="'+swfName+'"><param name=quality value=high><embed src="'+swfName+'" quality=high width="250" height="125" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></object></embed>'; if(document.all) { document.all.myMovie.innerHTML = swfMovie; } else if (document.getElementById) { document.getElementById("myMovie").innerHTML = swfMovie; } } function disp() { if(window.confirm('チェック')) { changeSWF("フラシュファイル"); return true; } else { location.href="http://www.goo.ne.jp/"; } } // --> </SCRIPT> </HEAD> <BODY onLoad="disp();" > <div id="myMovie"> ここにフラッシュ </div>

dd90
質問者

お礼

お返事が大変遅れてしまって、本当に申し訳ありません。 教えていただいたスクリプトで、どうにか自分のお粗末なスクリプトを動作させる所までこぎつけました。 まだまだjavascriptもFLASHも初心者ですので、N_A_Oさんに教えていただいたスクリプトはとても勉強になりました。 今回は、結局ページ構成を変えて乗り切ることにしましたが(confirmがOKの場合に自動移動したいので…)、教えていただいたスクリプトは、また違う場面で使わせて頂きます。 わざわざ書き直して頂き、本当にありがとうございました。

その他の回答 (2)

  • N_A_O
  • ベストアンサー率66% (37/56)
回答No.2

OKを押すと、スタートじゃなくて フラッシュを表示する様にすれば、 OSやブラウザによらないで 同じ動きになるんじゃなの。

noname#35109
noname#35109
回答No.1

JavaScript の専門ではないのでよくわかりませんが, 思うに,IEだけが正常のような気がします。 横×縦=350×250 の 「kakunin.swf」 をHTMLと同じディレクトリに置き, 例えば書かれているBODY内を次のようにしたとします。 ------------------------------------------- <BODY onLoad="disp(); setTimeout('ChangePage()',1000*120)"> あいうえお<br> かきくけこ<br> <img border="0" src="http://www.google.com/images/logo_sm.gif" width="150" height="55"><br> <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH=350 HEIGHT=200> <PARAM NAME=movie VALUE="kakunin.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FFFFFF> <EMBED src="kakunin.swf" quality=high bgcolor=#FFFFFF WIDTH=350 HEIGHT=200 TYPE="application/x-shockwave-flash" > </EMBED> </OBJECT> </BODY> ------------------------------------------- NNとFirefoxでは、 「あいうえお」と「かきくけこ」と 「Googleロゴ」 は即表示されるのに, Flash だけ,「OK」ボタンをクリックするまで表示されません。 これっておかしいですよね。 「表示されるなら全て表示される。表示されないなら全て表示されない。」 というのが筋だと思います(私が勝手に思う筋(理屈)ですが)。 IEでは, 「あいうえお」も「かきくけこ」も 「Googleロゴ」 も Flash も全て即表示です。 ちゃんと筋が通っています。 = = = = = = = = = = 一応,IE "だけ" の対処法は考えました。 「JavaScript でムービーを制御する」 http://www.adobe.com/jp/support/flash/ts/documents/fl0017.html ここ↑にあるように, JavaScript で Flash を制御できます。 これを参考に確認ダイアログで「OK」がクリックされるまで,Flash を stop させておいて, 「OK」がクリックされると Flash を play させるものです↓。 ------------------------------------------- <HTML> <HEAD> <TITLE>~</TITLE> <SCRIPT TYPE="text/javascript"> <!-- //★ここの部分付け加え var gTheMovie; if(navigator.appName=="Netscape"){ gTheMovie = document; }else{ gTheMovie=window; } function AAAA_play() { gTheMovie.AAAA.Play(); } function AAAA_stop() { gTheMovie.AAAA.Stop(); } // --> <!-- function disp() { if(window.confirm('テスト')) // ★↓ここ1行追加 { AAAA_play(); return true; } else {self.close();} } // --> <!-- function ChangePage(){location.href="■■■";} // --> </SCRIPT> </HEAD> <BODY onLoad="AAAA_stop(); disp(); setTimeout('ChangePage()',1000*120)" > <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH=350 HEIGHT=200 NAME="AAAA"> <PARAM NAME=movie VALUE="kakunin.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FFFFFF> <EMBED src="kakunin.swf" quality=high bgcolor=#FFFFFF WIDTH=350 HEIGHT=200 NAME="AAAA" TYPE="application/x-shockwave-flash" > </EMBED> </OBJECT> </BODY> </HTML> ------------------------------------------- 一応,ローカル環境でIEなら,うまく行きます。 しかし,今度は NN と Firefox では確認ダイアログが出なくなります。 NN と Firefox では, <BODY onLoad="AAAA_stop(); disp(); setTi… の,onLoad の2つめ以降が実行されないようです。 ですから, 元(ご質問で書かれている状態)から, setTimeout('ChangePage()',1000*120)" なんて,NN と Firefox では実行されていないのですよ。 といわけで, <BODY onLoad="disp();" だけにして, function disp() にいろいろ詰め込んでみましたが,どこかで詰まります。 詰まるというのは, IEができたら NNができない。NNができたら IE ができない。 これを繰り返すだけでした。 私は JavaScript に詳しくありません。 いろいろ,チャレンジされてみても良いかもしれませんよ。 ====== 結論 =============== 確認ダイアログ の出るページと, Flash のページを同じページにしているので苦労するだけなのではないでしょうか? よくある,「パスワード認証ページ」のように, 確認ダイアログ 専用のページを作って, 「OK」がクリックされたら,Flash のあるページに飛ぶ。 といのが簡単な対処法だと思います。 また,その Flash 表示ページに, <BODY onLoad="setTimeout('ChangePage()',1000*120)" > と書いておけば, この件も楽々クリアできると思います。

dd90
質問者

お礼

すみません、色々試していてお礼が送れてしまいました。 やはり、sassakunさんの仰るとおり、一つのページに色々詰め込みすぎていたようです。 もう一度、ページ構成から考え直したいと思います。 教えていただいたスクリプトですが、遅くなりましたが、どうにか自分のソースに当て嵌めて、きちんと動作する所までこぎつけました。 何分まだまだhavascriptは初心者ですので、とても勉強になりました。 ありがとうございました。

関連するQ&A

  • 確認ダイアログについて

    初歩的な質問で申し訳ないですが誰か教えてください。 cookieでセレクトボックス等の選択内容を保存させています。 その時、確認ダイアログを表示させて、yesならセーブorロード。 noならセーブorロードを中止、にしたいのですがやり方がイマイチ分りません。 別ページへのジャンプ確認なら window.location = "htp://sample/";でいいのは分かるのですが、onclick="get_cookie()" で実行しているのを onclickで"Check()"させ、それで"get_cookie()"を実行させるには どうしたらいいのかが分りません。 それとも元々やり方を間違えているのでしょうか? なお、get_cookieの構文に確認ダイアログを組み込むのは余計難しそうなので、そこは弄らずになんとかしたいと思っています。 よろしくお願いします。 <HTML> <HEAD> <script type="text/javascript"><!-- function Check { var res = confirm("保存していいですか?"); if( res == true ) { } else { alert("中止します。"); } } function get_cookie(){ // サンプルなので省略。 } function set_cookie(){ // サンプルなので省略。 } // --></script> </HEAD> <BODY> <FORM><INPUT type="button" name="save" value="セーブ" onclick="get_cookie()"> </FORM> <P><INPUT type="button" name="lord" value="ロード" onclick="set_cookie()"></P> </BODY> </HTML>

  • 確認ダイアログではいといいえの選択を反対に・・・。

    確認ダイアログはフォームボタンをした時に「はい」が選択されていると思います。 それを「いいえ」に選択されているようにはできないのでしょうか? 色々探してみたものの全くなく、自分の探し方が悪いのかわかりません。 何かしら情報などがありましたら教えていただきたいと思います。 よろしくお願い致します。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>jQuery</title> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("jquery", "1.7.1");</script> <script> jQuery(function($){ $('input.send').click(function(){ return confirm('登録しますか?'); }); }); </script> </head> <body> <form method="post"> Name:<input name="name" class="name" value="nama"/><br> Comment:<textarea name="comment"></textarea><br> <input class="send" type="submit" name="send" value="登録"> </form> </div> </body> </html>

  • javascriptで<object>タグのリンクを変えたいのですが

    <object>タグで指定したリンクをjavascriptで変えたいのですが・・・。 以下のように記述しているのですが上手くいきません。 <html> <head> <script langage="javascript"> function a(){ obj=document.getElementById("Link"); obj.getAttribute("data")=c.html; } </script> </head> <body onLoad="a()"> <object data="d.html" id="Link" width="700" height="500"></object> </body> </html> どなたかご教授宜しくお願いします。

  • .  <HTMLについて>  よろしくお願いします  

    ページに入ったときと出て行くときにアラート表示させるHTMLソースです。これをhead区間内に貼り付けてもうまく表示されません。何故でしょうか・・・ <SCRIPT LANGUAGE="JavaScript"> <!-- function Pagein(){ alert("いらっしゃいませ"); } //--> </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> <!-- function Pageout(){ alert("ありがとうございました"); } //--> </SCRIPT> よろしくお願いいたします。

  • ウィンドウを閉じる際のダイアログ

    JavaScriptのwindow.close()を使ってウィンドウを閉じようとすると、「ウィンドウは、表示中のWebページにより閉じられようとしています。このウィンドウを閉じますか?」という確認ダイアログが出てくるのですが、出さないようにするにはどうしたらいいでしょうか?

  • FLASH貼り付けコードの書き換えについて

    JavaScript/iframeタグが使えないサイトでこちらのコードのフラッシュを貼り付けしたいと思っています。 ・貼り付けコード <script type='text/javascript'> var fid ='20090122_432172'; var skin='nplayer.swf'; </script><script type='text/javascript' src='http://www.atamanikita.com/FLASH-PLAYER/nplayer.js' ></script> ・nplayer.jsの内容 nplayer_url = "http://www.atamanikita.com/FLASH-PLAYER/"; document.write('<object width="180" height="300">'); document.write('<param value="'+nplayer_url+skin+'?fid='+fid+'" name="movie"/>'); document.write('<param value="false" name="allowFullScreen"/>'); document.write('<embed width="180" height="300" allowfullscreen="false" type="application/x-shockwave-flash" src="'+nplayer_url+skin+'?fid='+fid+'"/>'); document.write('</object>'); そのサイトではyoutubeの貼り付けはできましたので、embedタグは使えると思います。 パラメーターをFLASHに送った状態で、JavaScriptを使わずに貼り付けしたい場合、どのように記入すれば よろしいでしょうか?

    • ベストアンサー
    • HTML
  • javascriptで印刷ダイアログを出力すると同時に

    javascriptで印刷ダイアログを出力すると同時に setTimeouで一定時間後にアラートを表示していたのですが、 IE8では印刷ダイアログが表示されている時はタイマーが止まってしまうようです。 また、IE6では動作しました。 なにか解決方法はないでしょうか? 以下がサンプルソースです。 <html> <head> <title>setTimeout</title> <script type="text/javascript"> function aaa() { alert("タイムアウトしました。"); } function func() { setTimeout("aaa()", 5000); window.print(); } </script> </head> <body onload="func()"> aaa </body> </html>

  • ホームページの閉じるボタンとダイアログ

    ホームページの閉じるボタンとダイアログ ホームページを制作しています。 そこで、ボタン(テキストではありません)をクリックすると、確認のようなダイアログのようなやつ(わかりますよ…ね)に『本当に閉じますか』と書いてあって、はいを選ぶとダイアログで『ありがとうございました。またお越しください』と表示し okをクリックするとウィンドウを閉じ、いいえを選ぶとダイアログで『お気に入り登録して帰ってくれると嬉しいです!』と表示したいのです。 まだ作り始めたばかりで、HTMLやjavascriptはよくわかりませんが、タグを教えてください。 よろしくお願いします。

  • JavaScriptについてご教授願います。

    お世話になります。 JavaScriptについてご教授願います。 main.html ----------------------------------------------------------- <HTML> <HEAD> </head> <body> <INPUT TYPE=BUTTON value="閉じる" onClick="CloseWin()"> </body> </html> ----------------------------------------------------------- kozin.html ----------------------------------------------------------- <HTML> <HEAD> <script language="JavaScript"> function CloseWin(){ window.close(); } </script> </head> <body> 個人情報 </body> </html> ----------------------------------------------------------- 実現したいことはmain.htmlのボタンを押下することによって kozin.htmlの画面を閉じるということです。 お手数をお掛け致しますがどうぞよろしくお願いいたします。

  • FlashとJavaScriptの連携について。

    HTML内に設置したFlash(SWFファイル)のボタンを押すと、別ウインドウのHTMLページが開く方法について。 現在ホームページを制作していますが、FlashとHTML内のJavaScriptとの連携が上手く出来ないので質問します。 問題のスクリプト・タグを記載します。 -----以下、HTML(index.html)内に記述したJavaScript----- <script type="text/javascript"> function winopen(top.html,1024,768{window.open(top.html,"name","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0" , Width=" + 1024 + ",Height=" + 768); </script> -----ここまで----- -----以下、Flash(SWFファイル)のボタンに対して記述したActionScript----- on (release) { getURL("javascript:winopen("top.html",1024,768);", "_blank"); } -----ここまで----- この状態で、HTM内にobjectタグを用いて設置したFlash(SWFファイル)のボタンが上手く動作してくれません。 希望する動作としては「index.htmlに設置されたFlash(SWFファイル)のボタンを押す」→「別ウインドウ(1024×768のサイズ、各ツールバー等非表示、スクロールバーのみ許可)が立ち上がりtop.htmlが表示される」という流れです。 ※移動先のtop.htmlには、特にJavaScriptの記述はありません。また、top.htmlはHTML内にFlash(SWFファイル)を設置した見た目だけフルFlashのページになります。 ご不足の記述等があれば、すぐに補足追加させて頂きます。 ご回答、宜しくお願い致します。

    • ベストアンサー
    • Flash

専門家に質問してみよう