- ベストアンサー
フラッシュでの別ウインドウの開き方
すみません質問です。 フラッシュで別ウインドウを開くswfをつくり、それは 正常に動いているのですが、そのhtmlを別のフレーム セットhtml(2分割フレーム)の フレームの一つに埋めて扱ったところフラッシュ中からhtmlが 開かなくなりました。 どうしたら良いでしょう。 別ウインドウを開くhtml⇒swf.html フレームセットのhtml⇒flameset.html としたとき、 swf.htmlはflameset.htmlの中にフレームの一つとして 入っている状態です。 swf.htmlを単独で開いた場合はその中のswfから 別フレームを開くことが出来ます。 フレームの一つとした状態からだと駄目なのです。。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
お礼
どうもこんばんは。 いろいろとご相談させていただきましたが、解決しました。 結論をいうと、ActionScript JavaScriptともにまったく問題はありませんでした。 ではなぜ動かなかったかというと、Framesetを作っている(親フレームの)htmlと 子フレームの(swfの入っている)htmlがそれぞれ帰属するドメインが違って いたからのようです(実は)。 全然違うサイトの管理者が他の管理下にあるhtmlを勝手にフレームに取り込んだり ましてやjavascriptを動作させるなどセキュリティ上とんでもない という都合のようでした。 確かにフレームを使っての勝手なページの取り込みなんかを無制限で 許可してしまうと、scriptによっては関数名やobject名の重複や混在が 発生しやすくなり、ユーザに被害に合わせてしまう恐れが高くなります。 マウスオーバーでのスワップイメージ程度ならともかく、window.openなどになると 物騒ということで、無効化されていたのかもしれないです。 まーはっきりとはわかりませんが、、。 とにかく、ありがとうございました。 大変助かりました!
補足
たびたびの回答ありがとうございます。 また、いただいたアドバイスを使って修正してみましたが、やはりうまくいきません。 alertの表示が出来なかったことから、javascriptとアクションスクリプトの 連携が取れなくなっている、バグか何かと判断せざるを得ないようです。 ためしに、javascript側からフラッシュ内のMCを動かすスクリプトを書いても、 やはり「子フレームとして扱った場合のみ」うまくいきませんでした。(以下のもの) (自身のフレームがF-sitaの場合のみ、checkerMCを2フレーム目に移動) <script language="javascript"> if(top.frames[1].name=="F-sita"){ window["pt"].TGotoFrame("_flash0/checker",2); } </script> 仕方がないので、隠しフレームを設け(name=hidden,height=0)、フラッシュからは target=hiddenの形で別のhtmlを開き、その開かれるhtmlに onLoadで本来の目的のwindow.openを仕掛けました。 これなら、swfからはJSを直接干渉していないので目的は達成できるのですが、 フレームの遷移の関係で、opener.parent.frames のページ全体の ユーザビリティが悪くなってしまいました。(ブラウザの戻るボタンを) 押しても、swfのフレームの見える部分が戻らない(hiddenフレームがユーザの 見えない部分で1ページ戻ってるから。) どうしようもないって感じです。 flashにjavascriptのwindow.openを直接埋め込むようなことって 出来ないでしょうか。