重要なお知らせ: このブログの更新は終了しました!詳しくはこちら "ブログ移転しました。" をご覧ください。

Flash:自分が張られているページのURLを取得


_urlでSWFのおかれているURLのパスが取得できるのだけど、
自分が張られているHTMLページのURLって取得できない;

でもv8なら、なんの手助けなしにいけちゃう。
getURLでJSを宣言して、ExternalInterface.callで戻り値のゲット!

//getURLを用いてJSを宣言
getURL(”javascript:getLocation=function(){return window.location.href;};void(0);”);

//ExternalInterfaceを用いて宣言したFunctionを呼び出し戻り値を得る
var myBaseUrl = String(ExternalInterface.call(”getLocation”));

//javascript alertを用いて結果を見てみる
ExternalInterface.call(”alert”,myBaseUrl )

上の例だと、myBaseUrl に正しく値が入ってこない。
他もそうなのかどうかわからないけどIEの場合はそう。
JSの宣言と、呼び出しが同時だとダメっぽく、setIntervalなどを用いて間隔をとって呼び出さなくちゃダメっぽい!

//getURLを用いてJSを宣言
getURL(”javascript:getLocation=function(){return window.location.href;};void(0);”);

var siid = setInterval(function(){

clearInterval(siid);

//ExternalInterfaceを用いて宣言したFunctionを呼び出し戻り値を得る
var myBaseUrl = String(ExternalInterface.call(”getLocation”));

//javascript alertを用いて結果を見てみる
ExternalInterface.call(”alert”,myBaseUrl )

},1); // 1msで十分ぽい / 24fps でテスト

その他注意が必要なのは、
・ExternalInterfaceの戻り値が受け取れるようなソースで貼り付けられていること
これにつまづかないように

この手法つかえば、なんでもありになりそう。

コメントをどうぞ