FlashからJavaScriptを呼び出す際のエラーについて

このQ&Aのポイント
  • FlashからJavaScriptを呼び出す際にエラーが発生し、警告ウィンドウが表示されない問題が発生しています。
  • getURLの仕様により、別サーバーにあるswfファイルをロードしている場合にJavaScriptをコールする方法がわかりません。
  • 解決策を教えてください。
回答を見る
  • ベストアンサー

FlashからJavaScriptを呼び出す際のエラーについて

皆様こんにちは。 WEB作成初心者で常識的な質問でしたら大変申し訳ございませんが、調べてみてもどうしても解決できなかった為ご質問させて頂きました。どうかご教授お願いいたします。 タイトルのとおり、Flash側からjavascriptをコールしたいのですが、 swf側 on(press){ getURL("javascript: a()"); } html側 function a(){ alert('alert!'); } のような例の場合、htmlファイルとswfファイルが同じディレクトリ内にある場合は警告ウィンドウがきちんと表示されるのですが、swfを別サーバーに置いてそれを呼び出しているhtmlの場合は警告ウィンドウが表示されません。 私がgetURLの仕様を知らないだけなのかもしれませんが、別サーバーにあるswfファイルをロードしているようなページの場合、どのようにすれば呼び出し元htmlを表示しているウィンドウに対してjavascriptをコールする事が出来ますでしょうか? お手数をおかけしますがご教授頂ければ幸いです。

  • Flash
  • 回答数1
  • ありがとう数4

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

Flash Player 6 以降は、ドメイン間のセキュリティ保護機能が導入されています。 HTML で記述された JavaScript を Flash 側から呼び出す際は、swf ファイルと HTML ファイルが同じドメイン(端的に言うと同じサーバー)に存在しているかどうかが、重要なポイントになります。 別のサーバーにある swf ファイルと HTML ファイル間でやりとりを行う、つまり、HTML ファイルがあるサーバーとは違うサーバーにあるムービーを表示している場合、そのムービーから HTML ファイルに書かれている JavaScript を実行できるようにするかどうかは、ムービーではなく HTML のタグの方に秘密があります。 普通にパブリッシュすると、ムービーを表示するためのHTMLファイルも一緒に作成されます。この HTML ファイルを、メモ帳などで開いてみてください。 <object> ~ </object> で囲まれている部分が、Flash ムービーを表示するためのタグです。 この中に、  <param name="allowScriptAccess" value="sameDomain" />  <embed src=・・・ allowScriptAccess="sameDomain" という箇所があるかと思います。 この中の”sameDomain”の部分を、2箇所とも、”always”に変更してください。別のサーバーにある swf ファイルからでも、この HTML で記述されている JavaScript を実行できるようになります。 ちなみに、デフォルトである”sameDomain”とは、swf ファイルと HTML ファイルが同じドメインに存在している場合に限り、swf ファイルと HTML ファイルとの間でスクリプトの実行を許可する、という意味です。 同じディレクトリ内にある時は正常なのに、違うサーバーにムービーを置くと動かなくなるのは、このような理由によるものです。 なお、sameDomain にした場合でも、サーバーが同じであればいいだけなので、同じサーバー内にあるムービーと HTML ファイルならば、別のフォルダにあってもスクリプトは実行されます。

chanter
質問者

お礼

ご回答ありがとうございます。 なるほど~swfの呼び出し側のタグだったのですね・・ ムービー側ばかりに気が行ってswf呼び出し側のタグも 一つ一つに意味があるものなのにFlashのパブリッシュ機能に任せて当たり前のように使っておりました。 大変丁寧で分かりやすくご回答して頂きましてありがとうございました。 大変勉強になりました。

関連するQ&A

  • 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側で解決できませんでしょうか。 どうぞよろしくお願いいたします。

  • FlashとJavaScriptの連携について。

    HTML内に設置したFlash(SWFファイル)のボタンを押すと、別ウインドウのHTMLページが開く方法について。 現在ホームページを制作していますが、FlashとHTML内のJavaScriptとの連携が上手く出来ないので質問します。 問題のスクリプト・タグを記載します。 -----以下、HTML(index.html)内に記述したJavaScript----- <script type="text/javascript"> function winopen(top.html,1024,768{window.open(top.html,"name","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0" , Width=" + 1024 + ",Height=" + 768); </script> -----ここまで----- -----以下、Flash(SWFファイル)のボタンに対して記述したActionScript----- on (release) { getURL("javascript:winopen("top.html",1024,768);", "_blank"); } -----ここまで----- この状態で、HTM内にobjectタグを用いて設置したFlash(SWFファイル)のボタンが上手く動作してくれません。 希望する動作としては「index.htmlに設置されたFlash(SWFファイル)のボタンを押す」→「別ウインドウ(1024×768のサイズ、各ツールバー等非表示、スクロールバーのみ許可)が立ち上がりtop.htmlが表示される」という流れです。 ※移動先のtop.htmlには、特にJavaScriptの記述はありません。また、top.htmlはHTML内にFlash(SWFファイル)を設置した見た目だけフルFlashのページになります。 ご不足の記述等があれば、すぐに補足追加させて頂きます。 ご回答、宜しくお願い致します。

    • ベストアンサー
    • Flash
  • Javascriptで起動するときの音の消失

    いつも、このページにはお世話になっています。 FLASHファイルで、別のFLASHファイルをJavascriptで呼び出すときに、音が鳴りません。 ファイル構成は以下のようになってます。 index.html file1.swf index2.html file2.swf 要するにindex.htmlにある、file1.swfから index2.htmlを呼びます。起動は出来ます。しかし、 index2.htmlにあるfile2.swfの音が途中で 切れてしまいます。 index.htmlの呼び出し側をAタグなどをして Javascriptを呼んだ場合は音が鳴ります。 これは何故なんでしょうか? すいません。困っていますよろしくお願いします。 コード↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ [file1.swf] _root.getURL("JavaScript:void(subOpenWin())"); [index.html] <script language='JavaScript'> <!-- function subOpenWin(){ var reSub = subOpen('index2.html','newOpen',0,0,0,0,1,0,1024,680,0,0); return reSub; } //--> </script>

    • ベストアンサー
    • Flash
  • Flashから新規ブラウザを開くことと、htmlの埋め込み

    1.Flashから新規ブラウザを開きたいのですが、メニューバーを消したいのでjavascriptで制御しようと思いました。 SWFのボタンアクション on (release) { getURL("javascript:gura()"); } swfを組み込んだhtmlのjavascript function hoge() { gura = window.open("1.html","gura","width=770,height=550,resizable=no,status=no,scrollbars=no"); 現在これで一応動作はしているのですが、別ウィンドウが開かれて、javascriptで作った閉じるボタンを押して閉じて、再度ボタンを押してもウィンドウが開かれません。どうして1回しか動作しないのかが分からなくて困っています。また、javascriptではなく、Flash側から制御して開く事はできないのでしょうか? 2.netで検索して調べていたら、CGIの掲示板をFlashの中にhtmlのiframeを使う様に埋め込めると書いてあったのですが、どの様にすればできるのでしょうか? 以上の2点です。解答お願い致します。

    • ベストアンサー
    • Flash
  • javascriptで違うドメインのXMLを取得して(flash経由)

    javascriptで違うドメインのXMLを取得して(flash経由)ページに表示させようとしているのですが文字化けをしてしまいます。 試しに他のサーバにXMLファイルを置いた場合はちゃんと読み込まれて文字化けせずに表示されます。 サーバの環境によって取得するデータが文字化けしてしまうことがあるのでしょうか? その場合、javascriptやswfに手を加えて修正することができるでしょうか? それともサーバの設定などを変更する必要があるでしょうか? なにか情報を持っている方、教えてください。

  • javascriptからflashを動かしたいのですがうまく動きません

    javascriptからflashを動かしたいので、下記のサイトを参考にまずflashへアクセスするためのテキスト表示のプログラムを作っています。 しかし、IEのエラーで「'document.chubuflash'はnullまたはオブジェクトではありません」と出てテキストが表示されません ●参考サイト(クロスブラウザの部分はやっていません) http://itpro.nikkeibp.co.jp/article/COLUMN/20070118/259015/?ST=star... flash側(1フレーム)********************** flash.external.ExternalInterface; function showMenu(urlno) { textBox.text = String(urlno); } ExternalInterface.addCallback("setMenu",null,showMenu); stop(); a=0; --------------------------------- ダイナミックテキストにインスタンス名:textBox javascript(html)側*************************** <script type="text/javascript"> function selectMenu(url){ document["chubuflash"].setMenu("JavaScriptから送った文字列"); } </script> -------------------------------------------- <a href="xx.php?xx_no=47" onmouseover="selectMenu(47)">●●</a> -------------------------------------------- flashのidとnameはchubuflashにしています。 ファイル名はchubuflashと別のものになっています。 ちなみに、47を渡しているのはこの数値を使おうと思って渡しています。うまく動かなかったのでとりあえず使用していた部分を消してテキスト表記に変更してテストしています。 document~ の前の行にalert("出力");で、出力されますが、document~ の後ろに入れると出ませんでした。 環境は ・flash CS4 ・actionscript2.0 ・windows XP です。 アドバイスよろしくお願いいたします。

  • Javascriptのエラー

    HPのurlが代入されているPerlの変数$urlをJavascriptに引数として渡し、HPを別ウインドウに表示したいのですが、 エラー ')'が抜けているとなりエラーになります <SCRIPT LANGUAGE="JavaScript"> <!-- function abc(def) { new1 = window.open("def", "", "width=400, height=310"); new1.moveTo(0,0); new1.document.close(); } //--> </SCRIPT> <A HREF=\"javascript:abc($url)\">別ウィンドウに表示</A> 何処が間違っているのですか。

  • Flashでのフレーム操作

    こんにちは。Flashの事で質問なのですが、 フレームを上・中・下の3つに分けたhtmlを作り最初に上中下全てのフレームにswfを再生させ、その後、中フレームのswfの中のボタンをクリックすると中のフレームに別のhtmlを表示させたいのですがなかなかうまくいきません。 今試みてみたのは、まずswf中のボタンに  on (press) { this.getURL("JavaScript:change('http:// ~')");        } を記述し、htmlのhead部分に <SCRIPT LANGUAGE = "JavaScript"> <!-- function change(myurl){ parent.mainFrame.location = myurl; } //--> </SCRIPT> を記述してみたのですがだめでした。 分かる方、ご教授頂ければ幸いです。

  • FlashとJavaScriptで掲示板

    この度、FlashとJavaScriptを連携させて掲示板を作ろうと思いました。 そこでなのですが、JavaScriptでフォームをつくり、そこに入力した文章を変数としてFlashに渡すことは可能でしょうか? その変数を書き込みとして、Flashに表示したいのですが・・・ また、これ以外にも作成方法がありましたらご教授願います。 ちなみに、これはサーバー側で動かす予定です。 Flashのバージョンは MX 2004 Pro です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • FLASHのGetURL

    デスクトップ上にAというフォルダをつくりその中に、 a.swfとb.swfというFlashファイルを入れて、 a.flaの「ボタン」のアクションから on (release) { getURL ("b.swf", "_self"); } と入力してパブリッシュ後、a.swfから実行すると、 (絶対パスというのでしょうか)“c:\document&setting\○○\b.swf”は見つかりません というメッセージが出てしまいます。

専門家に質問してみよう