アクセシビリティ
デベロッパーリソース

目次

外部APIを使用したFlashとJavaScriptの接続

Flash Player 8のセキュリティ変更

まずここで紹介するのは、セキュリティ関連の制限について、Flash Player 8が旧バージョンより強化されている点です。

  • ローカルのsandbox:デフォルトでは、ローカルのSWFがインターネットに接続できなくなっています。また、HTTP通信やローカルのHTMLファイルとの接続も行えません。 Flash Player 7以前のバージョンのSWFがこうした動作を試みると、Flash Player 8ではそれを実行できないというメッセージが記載されたダイアログボックスが表示されます。このダイアログボックスが表示されるという問題と既存のコンテンツが破損するという問題は、エンドユーザまたはFlashデベロッパーが適切な許可を設定すれば解決します。
  • 読み込み制限:ローカル以外のURLにあるSWFとHTMLのコンテンツについては、ローカルパスからコンテンツ(SWF、HTML、PNGなど)を読み込むことができなくなっています。
  • サードパーティ製ストレージ: Flash Playerで表示されるオブジェクトがサードパーティのSWF(ブラウザのアドレスバーに表示されているドメイン以外のドメインにあるもの)によって常に共有されている場合でも、そのオブジェクトの読み込みや書き込みができないようにユーザが設定できるようになっています。この制限はデフォルトでは有効になっていないので、これを適用するかどうかはユーザが自分で判断しなければなりません。
  • allowScriptAccessのデフォルト値: Flash Player 8以降のSWFでは、HTMLの allowScriptAccess パラメータのデフォルト値が"always"ではなく"sameDomain"になっています。Flash Player 7以前のバージョンのSWFに対しては、これは適用されません。この allowScriptAccess パラメータによって、SWFがHTMLページ上のJavaScriptを呼び出すかどうかが制御されます。

これら4種類の制限のなかでも、 allowScriptAccess は特にJavaScriptとの接続に密接に関係しています。こうしたセキュリティ制限の変更について詳しくは、Deneb Meketaの記事「Security Changes in Flash Player 8(Flash Player 8におけるセキュリティ変更)」をご覧ください。

この allowScriptAccess の各設定は、以下のとおりです。

  • allowScriptAccess が"never"の場合、外部とやり取りしようとするスクリプトは常に遮断されます。
  • allowScriptAccess が"always"の場合、スクリプトは常に外部とやり取りできます。
  • allowScriptAccess が"sameDomain"(Flash Player 8からSWFでこの設定がサポートされるようになっています)の場合、ホストしているWebページと同じドメインにそのSWFファイルが存在する場合に限って、スクリプトと外部のやり取りが許可されます。
  • allowScriptAccess がHTMLページで明確に指定されていない場合、埋め込まれているSWFファイルのデフォルト値はFlash Player 8では"sameDomain"に設定され、旧バージョンでは"always"に設定されます。

1つのWebページ上では同じドメインからのみJavaScript関数を呼び出すことができます。ただし、ローカルで他のドメインから呼び出しのテストを行った場合、SWFファイルの設定は allowScriptAccess = "always"となります。

FlashからHTMLにパブリッシュすると、以下のコードが生成されます。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>allowScriptAccess</title> </head> <body bgcolor="#ffffff"> <!--url's used in the movie--> <!--text used in the movie--> <!-- saved from url=(0013)about:internet --> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="allowScriptAccess" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="allowScriptAccess.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="allowScriptAccess.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="allowScriptAccess" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> </body> </html>

上記のなかでハイライト表示されたコードについては、 allowScriptAccess="sameDomain" から allowScriptAccess = "always"に変更する必要があります。

注意:ローカルのFlashコンテンツをインターネットに接続させる方法については、Flash Playerテクニカルノート*を読んでください。