上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。




前回の記事では、SWFファイルが動作しているアプリケーションのURLやホスト名を取得する方法を記載しました。今回は、SWFファイルをロードしたURL、ホスト名を取得する方法を記載します。

前回の記事はこちら
【FLEX】SWFファイルが実行されているホスト名とURLの取得



サンプルソース



<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="500" height="150">

<mx:Script>
<![CDATA[

private function buttonClick() :void {
var url:String = "";

// 使用ブラウザがExternalInterfaceを利用可能かチェック
if(ExternalInterface.available) {
// Javascriptを用いて使用しているブラウザ情報を取得
url = ExternalInterface.call("function(){ return location.href; }");
}

//URLを取得
lbl1.text = url;
//ホスト名を取得
var pattern1:RegExp = new RegExp("http://[^/]*/");
lbl2.text = pattern1.exec(lbl1.text).toString();
}
]]>
</mx:Script>

<mx:Button label="取得" click="buttonClick()" />

<mx:Form>
<mx:FormItem label="URL :">
<mx:Label id="lbl1" text=""/>
</mx:FormItem>
<mx:FormItem label="Host Name :">
<mx:Label id="lbl2" text=""/>
</mx:FormItem>
</mx:Form>

</mx:Application>


取得ボタンを押した時にExternalInterfaceを用いてJavaScriptでURLを取得し、取得したURLからホスト名を取得しています。

ExternalInterface.availableでは、利用ブラウザがExternalInterfaceAPIを利用出来るかチェックしています。ExternalInterfaceを利用する際は、チェックを行うべきです。

Adobe® Flex™ 3.2 リファレンスガイド ExternalInterface

また、ExternalInterfaceを用いてJavascriptを利用する際に、セキュリティ機能に関して注意する必要があります。SWFをUPしているサーバーと別ドメインのサーバーからSWFをロードする場合、JavaScriptの実行を「許可」するようにSWFを埋め込む必要があります。

SWFをembedタグで利用する方法を以下に記載します。
※ 本サンプルをembedで埋め込んだ際の記述内容です。


<embed
height="150" width="480" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer"
src="http://blog-imgs-19.fc2.com/s/t/u/studynet/sample_flex28.swf"
play="true"
loop="true"
menu="true"
allowScriptAccess="always">
</embed>


上記のように「allowScriptAccess」を「always」で指定することにより、別ドメインにおいてもJavascriptを使用できるようになります。「allowScriptAccess」未指定の場合、デフォルト値は「sameDomain」つまり同じドメインのサーバーでないと利用できないようになっています。

allowScriptAccessに関しては、以下のリンクを参考にしました。
「allowScriptAccess のデフォルト値」の項目に記載されています。
Flash Player 8 のセキュリティ機能の変更点


動作サンプル



FC2では、ブログのURLと画像やファイル、SWFが動いているURLは異なります。
SWFをロードしている本記事のURL、ホスト名を表示出来ていることが確認できます。
少しでも参考になれば応援お願いします。












上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。