У меня проблема с моими прослушивателями событий с помощью 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(); кажется, он использует ранее сохраненный результат от первого вызова.
Я надеюсь, что кто-то может мне помочь, спасибо,
Руди