- ベストアンサー
Flashからリンクする際のconfirmの記述
- Flashバナーから外部ページへのリンクを確認するためにconfirmを使用する方法についての質問です。
- 現在の実装ではダイアログが表示されるもののOKをクリックしてもキャンセルをクリックしても別ウィンドウで外部ページが開かれます。
- また、Flashバナーが貼ってあるページには真っ白な画面と[object]が表示されます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
親元のページが 真っ白画面で[object] 状態になるのは、 window.open の実行で戻り値 「Wondowオブジェクト」 が返ってくるからだと思います。 戻り値表示を回避するには link_mc をクリックしたときの動作を以下のようにすれば良いと思います。 組み合わせによって数通りの書き方ができますが 一応、3~4例書いてみます。 ※「AAA.html」 は、仮リンク先URL です。 ※getURL の ( ) 内が改行しているように 見えるかもしれませんが改行ナシの1行です。 --------------------------- // link_mc をクリックしたときの動作を定義 link_mc.onRelease = function() { // リンク先 を 別窓で開く getURL("javascript:if(window.confirm('外部ページを開きます')){window.open('AAA.html');void(0)}"); }; --------------------------- ↑または↓ --------------------------- // link_mc をクリックしたときの動作を定義 link_mc.onRelease = function() { // リンク先 を 別窓で開く getURL("javascript:if(window.confirm('外部ページを開きます')){void(window.open('AAA.html'))}"); }; --------------------------- ↑または↓ --------------------------- // link_mc をクリックしたときの動作を定義 link_mc.onRelease = function() { // リンク先 を 別窓で開く getURL("javascript:window.confirm('外部ページを開きます') ? void(window.open('AAA.html')) : void(0)"); }; --------------------------- あと、 「ものは試し」と思ってやってみましたら これでもできました↓。 --------------------------- // link_mc をクリックしたときの動作を定義 link_mc.onRelease = function() { // リンク先 を 別窓で開く getURL("javascript:if(window.confirm('外部ページを開きます')){window.open('AAA.html')};this.href"); }; --------------------------- 以上では 一応 ActionScript の修正案を書いていますが 内容的には ActionScript は全く関係なくて、 全て JavaScript の仕様に対する対処法ですよ。 (HTML から a href を実行するときの対処法でも同様の事項が出てきます。) =/=/=/=/=/=/=/=/=/=/= その他 Suzuka で [SWF8] を生成する設定にしている場合は ExternalInterface クラスが使えますから これを使ってみても良いかもしれません。 ※同じく 「AAA.html」 は、仮リンク先URL です。 ※同じく ExternalInterface.call の ( ) 内が 改行しているように見えるかもしれませんが 改行ナシの1行です。 --------------------------- // link_mc をクリックしたときの動作を定義 link_mc.onRelease = function() { // リンク先 を 別窓で開く flash.external.ExternalInterface.call("function(){if(window.confirm('外部ページを開きます')){window.open('AAA.html')}}"); }; ---------------------------
その他の回答 (1)
- mat-21
- ベストアンサー率56% (91/162)
FlashのActionScript「getURL」に全ての「JavaScript」を実行させていますが、FlashのAcrionScriptに直接JavaScriptを実行するのではなく、HTML側に関数(function)として定義し、FlashのActionScript側では、その関数(function)を実行させてみてはいかがでしょうか? ▼HTML側 <script language="javascript" type="text/javascript"> function poppage(linkadd){ if(window.confirm('外部ページを開きます')){ window.open(linkadd); } } </script> ▼Flash ActionScript側 getURL("javascript:poppage('リンク先のアドレス')"); 正常に動作しなかったらごめんなさいm(_ _)m
お礼
早速のご回答、ありがとうございます。 私も、HTML側に実行させたら楽だと思うのですが、このFlashバナーは他の方も使う予定がありまして。 出来れば、先方の負担を軽減できないかなと(汗)。 でも、難しいようであれば、HTML側にも記述をお願いするしかないですよね。
お礼
イメージ通りに出来ました! JavaScript記述の方でしたか。 大変失礼を……(汗) ご回答ありがとうございました。 とても助かりました。