Flex クライアント アプリケーションがあります。ユーザーがブラウザーを閉じたときに Flex で実行するクリーンアップ機能が必要です。ネットで次の解決策を見つけましたが、途中でしか機能しません。どうすれば修正できますか?ご回答ありがとうございます。
症状
CustomEvent
トリガーされますが、実行されません。
>> EventHandler forCustomEvent.SEND_EVENTS
は Mate EventMap によって定義されます。ハンドラーが行うのは、 を呼び出すことだけHTTPServiceInvoker
です。デバッグ コンソールで、ハンドラーと HTTPServiceInvoker がトリガーされていることを確認できますが、resultHandlers
も もfaultHandlers
呼び出されませんでした。ボタンクリックハンドラで同じものをディスパッチするとCustomEvent.SEND_EVENTS
、期待どおりに動作するため、このイベントハンドラに問題がないことはわかっています)- ブラウザは、閉じる前にクリーンアップ機能が完了するのを待っているようです。(ブラウザが閉じる前にすべてのトレースが出力されました)
コード
以下を index.template.html に追加しました
window.onbeforeunload = clean_up;
function clean_up()
{
var flex = document.${application} || window.${application};
flex.cleanUp();
}
そして、アプリケーションの MXML ファイルで以下を使用しました
import flash.external.ExternalInterface;
public function init():void {
ExternalInterface.addCallback("cleanUp",cleanUp);
}
public function cleanUp():void {
var newEvent:CustomEvent = new CustomEvent(CustomEvent.SEND_EVENTS);
newEvent.requestObj = myFormModel;
dispatchEvent(newEvent);
// for testing purposes
// to see whether the browser waits for Flex cleanup to finish before closing down
var i:int;
for (i=0; i<10000; i++){
trace(i);
}
}
マイセットアップ
- フレックスビルダー 3
- Mate MVC フレームワーク (Mate_08_9.swc)
- フラッシュプレーヤー 10