У меня проблема с моими EventListeners с URLLoader, но эта проблема возникает в IE, а не в FF.
public function getUploadURL():void {
var request:URLRequest = new URLRequest();
request.url = getPath();
request.method = URLRequestMethod.GET;
_loader = new URLLoader();
_loader.dataFormat = URLLoaderDataFormat.TEXT;
_loader.addEventListener(Event.COMPLETE, getBaseURL);
_loader.load(request);
}
private function getBaseURL(event:Event):void {
_loader.removeEventListener(Event.COMPLETE, getBaseURL);
}
Проблема в том, что мой getBaseURL запускается автоматически после того, как я выполнил код хотя бы один раз, но это имеет место только в IE. Что происходит, я вызываю свой getUploadURL, я проверяю, что сервер отправляет событие, которое приведет к событию Event.COMPLETE, поэтому getBaseURL выполняется, а слушатель удаляется. Если я вызываю метод getUploadURL и указываю неправильный путь, я получаю не Event.COMPLETE, а какое-то другое событие, и getBaseURL не должен выполняться.
Это правильное поведение в FireFox. В IE, похоже, что метод load () на самом деле не вызывает сервер, он напрямую переходит к getBaseURL () для Event.COMPLETE. Я проверил willTrigger () и hasEventListener () в _loader перед назначением нового URLLoader, и оказалось, что событие было хорошо удалено.
Надеюсь, у меня есть смысл, я упростил свой код. Подводя итог быстро: в FireFox он работает хорошо, но в IE первый вызов будет работать, но второй вызов не вызовет метод .load (); похоже, он использует ранее сохраненный результат первого вызова.
Я надеюсь, что кто-то может помочь мне,
Спасибо,
Rudy