У меня есть клиентское приложение Flex. Мне нужна функция очистки для запуска во Flex, когда пользователь закрывает браузер. Я нашел следующее решение в сети, но оно работает только наполовину. Как я мог это исправить? Заранее спасибо за любые ответы!
Симптомы
CustomEvent
сработало, но не выполнено.
>> EventHandler для CustomEvent.SEND_EVENTS
определяется Mate EventMap. Все, что делает обработчик - это вызывает HTTPServiceInvoker
. В консоли отладки я могу видеть, как запускается обработчик и HTTPServiceInvoker, но ни resultHandlers
, ни faultHandlers
не были вызваны. Я знаю, что у этого обработчика событий нет проблем, потому что когда я отправляю тот же CustomEvent.SEND_EVENTS
в обработчике нажатия кнопки, он ведет себя точно так, как я ожидал)
- Похоже, что браузер ожидает завершения функции cleanUp, прежде чем он закроется. (все следы были напечатаны до закрытия браузера)
код
Я добавил следующее в 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);
}
}
Моя настройка
- FlexBuilder 3
- Mate MVC Framework (Mate_08_9.swc)
- FlashPlayer 10