プロが教えるわが家の防犯対策術!

すみません質問です。
フラッシュで別ウインドウを開くswfをつくり、それは
正常に動いているのですが、そのhtmlを別のフレーム
セットhtml(2分割フレーム)の
フレームの一つに埋めて扱ったところフラッシュ中からhtmlが
開かなくなりました。

どうしたら良いでしょう。

別ウインドウを開くhtml⇒swf.html
フレームセットのhtml⇒flameset.html
としたとき、
swf.htmlはflameset.htmlの中にフレームの一つとして
入っている状態です。

swf.htmlを単独で開いた場合はその中のswfから
別フレームを開くことが出来ます。
フレームの一つとした状態からだと駄目なのです。。


よろしくお願いします。

A 回答 (3件)

#02です。


js--------------------
<script language=javascript>
function alt(){
alert(this.window.location);
}
</script>

as--------------------
on(release){
getURL("javascript:alt();");
}
上記、拝見しました。特に間違いはないかと思うのですが、私も参考書を参照しましたが、間違いはないと思います。強いて言うなら、
as--------------------
on(release){
this.getURL("javascript:alt()");
}
でどうでしょう?

この回答への補足

たびたびの回答ありがとうございます。

また、いただいたアドバイスを使って修正してみましたが、やはりうまくいきません。

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を直接埋め込むようなことって
出来ないでしょうか。

補足日時:2003/10/14 22:26
    • good
    • 0
この回答へのお礼

どうもこんばんは。

いろいろとご相談させていただきましたが、解決しました。

結論をいうと、ActionScript JavaScriptともにまったく問題はありませんでした。
ではなぜ動かなかったかというと、Framesetを作っている(親フレームの)htmlと
子フレームの(swfの入っている)htmlがそれぞれ帰属するドメインが違って
いたからのようです(実は)。

全然違うサイトの管理者が他の管理下にあるhtmlを勝手にフレームに取り込んだり
ましてやjavascriptを動作させるなどセキュリティ上とんでもない
という都合のようでした。

確かにフレームを使っての勝手なページの取り込みなんかを無制限で
許可してしまうと、scriptによっては関数名やobject名の重複や混在が
発生しやすくなり、ユーザに被害に合わせてしまう恐れが高くなります。
マウスオーバーでのスワップイメージ程度ならともかく、window.openなどになると
物騒ということで、無効化されていたのかもしれないです。


まーはっきりとはわかりませんが、、。
とにかく、ありがとうございました。

大変助かりました!

お礼日時:2003/10/16 01:22

上下2分割のフレーム(frameset.html)には、上のフレームには「top.html」があり、下のフレームには、「xxx.swf」を配置した「swf.html」があるわけですよね。


それで、xxx.swf内に例えばボタンがあって、そのボタンを押すと、新たに小さいウィンドウが出ればいいのかな?

「swf.html」側にJavaScriptを記述すると思うのですが...。
例えば、
<head>~</head>の間に
<script language="JavaScript" type="text/JavaScript">
<!--
function popUpWindow(fileName, windowName){
var windowStyle='channelmode=no,directories=no,fullscreen=no,location=no,menubar=no,resizable=no,scrollbars=no,status=no,titlebar=no,toolbar=no,top=100,left=100,width=300,height=300';
window.open(fileName, windowName, windowStyle);
}
と記述して、
「xxx.swf」のリンクのアクションスクリプトを使って、例えばボタンのシンボルだったら、ボタンのシンボルを選択して、
on(release){
this.getURL("JavaScript:popUpWindow('hirakitai.html','newWindow')");
}
で新しい横立て300pxのウィンドウが出ると思うのですが...。

この回答への補足

丁寧な回答ありがとうございます。

今までの自分のやり方では、フラッシュのボタンに書くアクションスクリプトには
実行するJavaScriptの関数名( openIt() )だけを書き
関数名後ろの引数は書かなかったのですが、
(htmlのjavascriptに開くURLその他を全て書いていたので)
いただいたアドバイスの通り、開き先のURL位はフラッシュ内の
ボタンに書いたほうがいいのかも知れません。


ためしにこの方法でやってみて、またご報告させていただきます。

ただ、投稿させていただいた動作不良は、WIN版IEでのみの現象で、
ほかのブラウザなどではちゃんと動いていたのが気になります。。
(その後、複数の環境で確認してみました)
WIN用IEのバグかもしれません。。
最悪ですが・・・。泣。

補足日時:2003/10/02 14:34
    • good
    • 0
この回答へのお礼

ごぶさたしてます。

いただいたアドバイスの通り、フラッシュの内部のボタンのactionScriptに
開かれるウインドウのurlその他の引数をつけてみたのですが、
やはりうまくいきません。

どうしたら良いでしょう?
なんだか、フラッシュとJavascriptの連携がうまくいっていない感じです。

ためしに、ウインドウを開くjavascriptの代わりに、自分自身のURLを
参照してalert表示するスクリプトをフラッシュからたたかせても
うまくいきませんでした。

js--------------------
<script language=javascript>
function alt(){
alert(this.window.location);
}
</script>

as--------------------
on(release){
getURL("javascript:alt();");
}

こんな感じです。
どうしたら良いんだろ?
html全体に問題があり、それがエラーを起こしているのかなぁ・・。

お礼日時:2003/10/13 06:29

フレームから飛ぶ場合は


url=get url
ウインド=_parent

ですか?

意味がちょっと分かりませんでした。

この回答への補足

すみません、意味通じにくかったみたいで。。

フラッシュから子ウインドウを開くテクニックがありますよね。
それは出来るんです。
(そのフラッシュのswfファイルが乗っているhtmlに
window.open("hoge.html","name","features")の
javascript関数を記述して、フラッシュのActionScriptからは
そのjavascriptを実行させる)
仮に、このhtmlをswf.htmlとします。

それとは別に、フレームを切っているhtmlをflameset.htmlとします。

で、このflameset.htmlに子フレームとしてswf.htmlが入っているわけです。
flameset.htmlのソース的には
<flameset rows=50>
<flame src=top.html>
<flame src=swf.html>
</flameset>
って感じです。(top.htmlはなんでも良いです)

んで、この状態になると、下フレームにあるswf.htmlの中のフラッシュから、
子フレームが開けなくなってしまうのです。

どうやったら、問題解決するかなぁと。
よろしくお願いします。

補足日時:2003/09/30 17:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!