今、製作中の案件でなぜかSWFAddress.getValue()が正しく動作しない。
1回、SWFAddress.setValue()すれば動くんだけど、setIntervalでひたすら待ってもダメ。
初期化処理が完了しない様子。
SWFObjectとのバージョンの組合せでうまく動くとか動かないとかあるみたいだけど、今のところ原因不明。
とりあえずExternalInterface経由でURLを取得してゴニョゴニュした後で、setValue()する事にした。
以下、サンプルソース(実際のソースの一部抜き出し)
// SWFAddressを待つ
var getValueTimer = setInterval(Delegate.create (this, waitSwfAddress), 11);
// SWFAddress起床処理
function waitSwfAddress() {
if (SWFAddress.getValue()) {
clearInterval(getValueTimer);
start();// 初期化処理とか
} else {
var myURL = String(ExternalInterface.call('getRowURL'));
// 空の値をgetValueしても起きないので、空の場合は害の少ない'/'で(後処理ではsplit('/')するし)
var param = (myURL.split('#')[1]) ? myURL.split('#')[1] : '/';
SWFAddress.setValue(param);
}
}
ただし、onChangeイベントを設定する際は必ず最初に1回イベントが発生してしまうので要注意。