• ベストアンサー

JavaScript + FLASH 【overLayFlash】

http://f-site.org/articles/2006/09/09042615.html 上記ページで紹介されている、むらけんさん制作のoverLayFlash.jsを元に、下記のようなカスタマイズを行いたいのですが、Javascriptがわからず困っています。 (1)onloadを使用し、ページ読み込み時に実行したい (2)FLASH終了後、今度はリンクにより再度表示したい(Replayみたいな感じで・・・。) というカスタマイズを行いたいのですが、(2)の時に、リンクをクリックすると、swfへ飛んでしまい、表示がおかしくなってしまいます。 (2)の時にもレイヤーを使用し、HTMLの上に被せたいのですが、 どうカスタマイズすればいいかわかりません。 どなたかjavascriptに精通してます方ご教授願えませんでしょうか。 苦肉の策として、swfファイル側のFLASHの表示を消すスクリプト、 onMouseDown=function(){ getURL("javascript:void(hideFlash());"); } に、getURL("index.html");を記述すれば、問題ないのですが、 マウスダウン時にリロードされてしまうので、格好が悪い気がします。 うまいことjavascript側で解決できませんでしょうか。 どうぞよろしくお願いいたします。

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

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

overLayFlash.jsは、<head>内で定義しているのですよね? でしたら、<body>のonloadは使用してはいけません。 (overLayFlash.jsが未熟な為そのような仕様だと思ってください。) ページのonloadイベントを追加したい場合の対応としては、verLayFlash.jsを改善してしまう。 ってのもあるけど、面倒でしょうし、以下の方法で大丈夫だと思います。 <head>内等で <script type="text/javascript"> function onloadEvent() { /* onloadで行いたい処理。今回だと(1)の実行処理 */ } addLoadEvent(onloadEvent); </script> #「onloadEvent」って関数名は適当に付けたので好きに変更してください。「addLoadEvent」は「verLayFlash.js」にある関数なので固定。

sunwarship
質問者

お礼

回答ありがとうございました! ご指摘の通り<body>のonloadを使用していました。 Head間に記述しましたところ、上手くいきました。 感謝です(≧∇≦) ありがとうございます。

その他の回答 (1)

  • masaota56
  • ベストアンサー率41% (58/139)
回答No.1

初期化をinitoverLayFlash()で行っているようですね。 この関数でrel=overLayFlashのアンカーを取得して、onclickを設定しています。 initoverLayFlashの中を見てみると、 anchor.onclick = function () { showFlash(this); return false; } となっています。これをonloadに応用すれば(1)はいけると思います。 (2)に関しても、hideFlash()で同じようにすればおそらく大丈夫かと。

sunwarship
質問者

お礼

回答ありがとうございました! 無事解決することができました! javascriptも勉強しようと思います。 ありがとうございました。

sunwarship
質問者

補足

さっそくのご回答ありがとうございます。 参考にさせていただき、色々と試してみました。 (1)はクリアできたのですが、やはり(2)でつまづいてしまいます。 onloadで表示されたFLASH終了後(クリックで終了)、リンクで再度表示をしようとすると、やはりswfに直接遷移してしまいます。 これはクリック時に、rel=overLayFlashが渡っていないのでしょうか。 initoverLayFlashで初期化を行っているとのことでしたので、initoverLayFlash Function部分に試しでwindow.location.reload();を記述したところ、リロードされてしまいますが、上手くいきます。 =onloadとクリック両方でということになると、初期化がうまくいかないのでしょうか。 私ですがjavascriptは初心者で記述の仕方がわかりません。 大変恐縮ですが、詳しく教えてはもらえませんでしょうか。 どうぞよろしくお願いします。