• ベストアンサー

ExternalInterfaceとframesetの相性。

framesetとExternalInterfaceについて質問です。 制作環境はflash8 とdreamweaver 8です。 framesetで読み込んでいるhtmlの中にswfobjectでswfを配置しました。 ExternalInterface使ってswfのfunctionを実行する際、通常は、swfobjectを使って var attachSwf = new SWFObject("/swf/navi.swf", "swfnavi", "100", "154", "8", "#FFFFFF"); このように配置すると、 「swfnavi」を指定してあげればその中のfunctionが実行されますが、 framesetで、swfを配置しているhtmlを <frame src="navi.html" frameborder="no" scrolling="no" noresize="noresize" id="naviarea" /> このように指定した際、配置元のhtmlのid名+swf名ということで、 naviarea. swfnavi.returnEvent(myFunction); と、やってみました。 safari(2.0.4)ではきちんと動くのですが、 firefox (2.0.0.12)で見てみたところ、全くfunctionが実行されません。 色々調べてみましたが、ブラウザのid判定は頭に、「window」「document」等、付けることくらいしか分からず、試しましたが変化無しです。(safariはどちらも動きます) javascriptをswfを配置しているhtmlで読み込めば動くとは思うのですが、それは今回は使えないのです。 safariとfirefoxで、framesetの指定方法が違うのかも?というのが原因のような気がするのですが、どなたか何か分かる方がいらっしゃいましたらご教示頂けると幸いです。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.1

<frame name="naviarea" id="naviarea" (略)> としてみてはいかがでしょうか。 未検証です。 id属性しか使えないのであれば、 ブラウザの独自仕様により、id属性のついたエレメントを、idを変数名にして、直接取得できる物もありますが、 document.getElementById()を使う方が良いと思います。

ramstein
質問者

お礼

こちらも早速のご指導ありがとうございます。 参考にさせていただき、 <frame name="naviarea" id="naviarea" (略)> とやりましたところ、動いちゃいました! ありがとうございます。 とても助かりました。 初めてframesetというものを使ったので、今後も役に立てていけたらと思います。

その他の回答 (1)

  • arexis
  • ベストアンサー率66% (66/99)
回答No.2

Flashの事は私はわかりませんのが、 JavaScriptでiframeのwindowを iframeのIDから指定する時は Firefox以外では ID単独でiframe内ウィンドウを指定できますが、 Firefoxは document.getElementById(ID).contentWindow です。 そのフレームの場合 document.getElementById('naviarea').contentWindow が Firefoxも含めたIE、Safariなどでもiframe内のwindow を意味します。 更にその下のドキュメントなら document.getElementById('naviarea').contentWindow.documentです。 name属性を使っても良い状況なら iframeにname指定がある場合は、どのブラウザでも name だけで iframe内windowを意味します。 参考になれば良いですが・・・。

ramstein
質問者

お礼

name属性で出来ました! すいません、ホントに素人なので、せっかく書いていただいた、 - - - - - - - - - - name属性を使っても良い状況なら iframeにname指定がある場合は、どのブラウザでも name だけで iframe内windowを意味します。 - - - - - - - - - - これを理解できませんでした。 arexisさんの後にお返事いただいたtalooさんの文章を読んで試したところ、動きました! arexisさんの後半の説明を読み直してみると、 frame name="naviarea" id="naviarea" ということだったのですね…。 このたびは、本当にありがとうございました。

ramstein
質問者

補足

早速のご指導ありがとうございます。 参考にさせていただき、 document.getElementById('naviarea').contentWindow. swfnavi.returnEvent(myFunction); としてみましたが、やはりsafariでは動いてfirefoxでは動きませんでした。 ホームページを作るのは難しいことだらけです(涙)

関連するQ&A

  • 改・キーボードナビゲーション

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=762151 にて質問し、解決したに見えたのですが、確認もせず閉じた為、再度投稿させて下さい。 ページトップにフレームファイルを置き、 <frameset cols="250,*" frameborder="0" framespacing="0"> <frameset rows="16,*" frameborder="0" framespacing="0"> <frame src="***.html" name="0" SCROLLING="NO" NORESIZE> <frameset rows="25,*" frameborder="0" framespacing="0"> <frame src="***.html" name="1" SCROLLING="NO" NORESIZE> <frameset rows="51,*" frameborder="0" framespacing="0"> <frame src="***.html" name="2" SCROLLING="NO" NORESIZE> <frame src="***.html" name="3" SCROLLING="NO" NORESIZE> </frameset> </frameset> </frameset> <frame src="***.html" name="4" SCROLLING="NO" NORESIZE> </frameset> とします。 NAME“0”のページがメニューで、ここをクリックするとNAME“1”に開かれる仕組みです。 NAME0に、 function checkNavigation() { if(event.keyCode==49)location.href="NAME1に開くページ"; } window.document.onkeydown = checkNavigation; と書きます。 前投稿では、「1.location.~」とすればOKだとなっていたのですが、確認した所何故か機能しませんでした。 NAME0をアクティブページにして“1”を押下してみたり、試して見たのですが駄目でした。 どうしたら良いのでしょうか。お願いします。

  • ブラウザによってフレームの表示が異なるのですが..

    はじめまして。 現在下記のような形のHPを制作しているのですが、フレームが難しくてなかなか進めません。 ブラウザやそれぞれの環境によって見え方が違ってしまいます。 私の環境では真ん中にぎゅっと詰まってスクロールが出てしまうような小さな見え方になってしまっています。 どの環境で見ても統一させるにはどのようにしたら良いのでしょうか。 ------------------------------ 上の固定バー ------------------------------ メニュー|内容     |     |     |     | ------------------------------ 下の固定バー ------------------------------ ソースは以下のように組みました。 <frameset rows="10%,*" cols="*" framespacing="0" frameborder="no" border="0"> <frame src="Margin/Index.html" scrolling="No" noresize title="topFrame"> <frameset rows="*,230" cols="*" framespacing="0" frameborder="no" border="0"> <frameset cols="215,*" frameborder="no" border="0" framespacing="0"> <frame src="Margin/Index.html" scrolling="No" noresize title="menuBarFrame"> <frameset cols="*,25%" frameborder="no" border="0" framespacing="0"> <frameset rows="64,*" frameborder="no" border="0" framespacing="0"> <frame src="topbar/topbar.html" scrolling="No" noresize title="topBarFrame"> <frameset rows="*,41" cols="*" framespacing="0" frameborder="no" border="0"> <frameset rows="*" cols="178,*" framespacing="0" frameborder="no" border="0"> <frame src="menu/menu.html" scrolling="No" noresize title="leftFrame1"> <frame src="top/top.html" name="main" title="topFrame"></frameset> <frame src="bottombar/bottomBar.html" scrolling="No" noresize title="bottomFrame1"> </frameset> </frameset> <frame src="Margin/Index.html" scrolling="No" noresize title="rightFrame"> </frameset> </frameset> <frame src="Margin/Index.html" scrolling="No" noresize title="MenuBarFrame"> </frameset> </frameset> <noframes> ------------- また、現在フレームは推奨されないのも知っているので、 オススメの組み方がありましたら教えていただけませんでしょうか。 HTML等に関してまったくの初心者ですので、判り易く教えていただけたら大変有り難く思います。どうぞよろしくお願いします。

    • ベストアンサー
    • HTML
  • フレームのホームページのサイズ指定の方法

    ●フレームのあるホームページを作ろうとしています。上段と下段左、下段右という3つの構成です。htmlでnoresize指定してもPC上でブラウザの窓を引っぱって大きさを変えると、それに連れて下段の幅が変わって(下段右のページが右にずれて)見えてしまいます。(IE6.0で見るとサイズ指定・固定されて見えるのですが、ネットスケープでは幅が違って見えます)これをどのPCで見ても、ブラウザの大きさがどうでも同じように(幅が変わらず)見せる方法を教えて下さい。 ●フレームのページのhtmlは以下のように記述しています。 <frameset border="0" bordercolor="#dddddd" frameborder="no" framespacing="0" rows="130,*"> <frame name="ue" noresize scrolling="no" src="xxxxx.html"> <frameset cols="202,580*" border="0"> <frame src="yyyyy.html" name="hidari" noresize scrolling="yes" > <frame src="zzzzz.html" name="migi" scrolling="yes" noresize > </frameset> ●いろいろ調べたのですが、解決できず、どなたか助けていただけましたら幸いです。何卒よろしくお願いいたします。

  • 横スクロールバーを消したいんです(><)

    こんにちは。とっても困っています。 ホームページを作成中ですが横スクロールバーが消えません。以下の プログラムのどこを直したらいいでしょうか。 どうぞよろしく御願いします。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>無題ドキュメント</title> </head> <frameset rows="107,318*" cols="777*,1" frameborder="no" border="0" framespacing="0"> <frame src="vxv.html" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" /> <frame src="UntitledFrame-23"> <frameset rows="*" cols="122,652*" framespacing="0" frameborder="no" border="0"> <frame src="dfg.html" name="leftFrame" scrolling="No" noresize="noresize" marginwidth="0" id="leftFrame" title="leftFrame" /> <frame src="main.html" name="mainFrame" id="mainFrame" title="mainFrame" /> </frameset> <frame src="UntitledFrame-24"> </frameset> <noframes><body> </body> </noframes></html>

  • フレームなしPからフレームありP内へのアンカーへ

    フレームなしページからフレームありページ内の指定アンカー(ラベル)へ飛ばしたいと思い、過去ログq135419を参考に JavaScript を埋め込もうとしていますが、うまくいきません。 フレームありのページは3分割してあり、上をaaa.htm、左をbbb.htm、右をccc.htmと作ってあります。 -例- <html> <head><title></title> </head> <FRAMESET rows="82,*" cols="*" frameborder="NO" border="0" framespacing="0"> <FRAME src="framef/aaa.htm" name="ue" frameborder="no" scrolling="NO" noresize id="header"> <FRAMESET rows="*" cols="228,*" framespacing="0" frameborder="NO" border="0"> <FRAME src="framef/bbb.htm" name="hidari" frameborder="no" scrolling="auto" noresize id="navi"> <FRAME src="ccc.htm" name="main" frameborder="no" scrolling="auto" id="main"> </FRAMESET> <NOFRAMES> <P>このページを表示するには、フレームをサポートしているブラウザが必要です。</P></NOFRAMES> </FRAMESET> </html> この内、ccc.htmにアンカー(ラベル)を指定し、フレームなしページからフレーム内のそのアンカー(ラベル)まで飛ばしたいと思っていますが、過去ログで提示してあるJavaScriptを当方のページで作ってあるものに置き換えてもうまく表示されません。(何も表示されません。) そもそも提示のJavaScriptでは3分割に対応してないのでしょうか。 元のページは業者で作成してもらったもので、フレームのページはcssとか使用され凝ったものになっています。それも何か関係あるのでしょうか。 よろしくお願いいたします。

  • フレームが固定できない

    Dreamweaverで左固定メニューで右にメインフレームがでるものをつくっています。 プレビューでみると画面の大きさを大きくすると左フレームと右フレームのあいだに白い余白ができ、画面を小さくするとその間が交差しながら小さくなります。 noresizeをいれているのですが、これがなおりません!画面の大きさをかえても右フレームと左フレームの境界線をなしにしたいのですがどうしたらいいのでしょう。 ちなみにコードはこうなっています。 <frameset rows="*"cols="245,900" frameborder="no" border="0"> <frame src="menu/menu.html" name="leftframe" frameborder="no" scrolling="no" noresize="noresize" marginwidth="0" marginheight="0" id="leftframe" border="0"/> <frame src="welcomephoto.html" name="mainframe" frameborder="no" noresize="noresize" marginwidth="0" marginheight="0"id="mainframe" border="0" /> </frameset> <noframes><body> </body> </noframes></html>

  • フレームと余白

    <html> <FRAMESET ROWS="100,*" FRAMESPACING="0"> <FRAME SRC="a.html" scrolling="no" frameborder="1" noresize> <FRAME SRC="b.html"> </FRAMESET> </html> a.htmlにscrolling="no"は必須です。 b.htmlにscrolling="no"は付けてはいけません。 a.htmlもb.htmlも内容は <html> <body style=margin:0> <table border=0 width=100%><tr><td>a</table> </body> </html> です。 b.htmlはwidth=100%になっていません。 見た目がwidth=100%になる方法を教えてください。

  • frameを使用したときのファイルの切り替え

     今、フレームを使用してHPを制作していますが、タグ例として、 <frameset rows="60,*" frameborder="no" border="0"> <frame src="header.html" scrolling="no" noresize> <frameset cols="200,*" frameborder="no" border="0"> <frame src="menu.html" name="menu" noresize> <frame src="top.html" name="top" noresize> </frameset> </frameset> と組み、上記の「menu.html」中に各コンテンツを羅列し、任意のコンテンツをクリックすると「top.html」は変わるという作りをしています。  これを、「menu.html」中の任意のコンテンツをクリックすると「menu.html」「top.html」の両方が変わるようにしたいのですが、いい方法がありましたらどなたか教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • textarea入力された文字をjump先のディレクトリにしたい

    このタイトルではちょっと分かり辛いですね。 leftframeにあるtextareaに会員名を入力すると同じ名前の階層のhtmlへ飛ぶようにしたいのです。それを右フレームに表示できないのです。 例えばabcさんがいた場合、/member/abc/my.htmlになります。 parent指定をしないとleftframeには出てくるのですが・・・ これはframesetなどがまずいのでしょうか? 大きく左右に分けられますが、右には入れ子のように上下2段のframeがあります。 以下にそのソースです。 <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <frameset cols="160,1*" frameborder="NO" border="0" framespacing="0"> <frame name="leftFrame" scrolling="NO" noresize src="side2.html"> <frameset rows="1*,24" frameborder="NO" border="0" framespacing="0"> <frame name="home-1" src="top-ordermade.htm"> <frame name="bottomFrame" scrolling="NO" noresize src="frame-3.htm"> </frameset> <noframes> <body bgcolor="#FFFFFF"> <script language="JavaScript"> <!-- function Change(){ url="http://www.○○.co.jp/member/"; wo=document.MY.id.value; parent.home-1.location.href=url+wo+"/my.html"; } // --> </script> <form name="MY"> <input type="text" name="id" size="15"> <input type="submit" value="GO!"onClick="Change()"> </form>  </body>  </noframes> </frameset> </html> どなたか宜しくお願いします。

  • フレームページの隙間

    フレームページを作ったのですが、フレームの間の隙間をなくしたのですがどのようになくすのか解りません。どうか教えて頂けないでしょうか。お願します。 実際のソースコート <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META name="GENERATOR" content="IBM HomePage Builder 2001 V5.0.0 for Windows"> <TITLE>もっくもっく</TITLE> </HEAD> <FRAMESET rows="155,*" frameborder="0" border="0" framespacing="0" framepadding="0"><!-- 上のフレーム --> <FRAME src="osawa1.html" name="1" scrolling="no" noresize topmargin="0" marginheight="0" leftmargin="0" marginwidth="0"> <FRAMESET cols="700,*" frameborder="0" border="0" framespacing="0" framepadding="0"><!-- 左のフレーム --> <FRAME src="osawa2.html" name="2" scrolling="auto" noresize mtopmargin="0" marginheight="0" leftmargin="0" marginwidth="0"> <!-- 右のフレーム --> <FRAME src="osawa3.html" name="3" scrolling="no" noresize topmargin="0" marginheight="0" leftmargin="0" marginwidth="0"> </FRAMESET> <NOFRAMES> <BODY topmargin="0" marginheight="0" leftmargin="0" marginwidth="0">フレーム対応ブラウザでご覧ください。</BODY> </NOFRAMES> </FRAMESET> </HTML>