Это своего рода сумасшедший, но я не могу думать ни о каком другом способе: вы можете поместить объект запроса в словарь, который настроен на слабое обращение к ключам, а затем проверить интервалы, был ли ключ удален.
Однако я не уверен, что произойдет сначала, либо сам SWF будет удален, либо словарь будет очищен. Также возможно, что с учетом одноразовой функции ссылка на объект запроса не удаляется, поскольку предполагается, что она удаляется вместе со всем SWF.
Еще одна вещь, которую я знаю, - это то, что события с неперехваченными ошибками будут захватывать события от navigateToURL
- не очень полезно, но, по крайней мере, могут дать вам указание, если это не сработало.
Еще одна простая вещь, о которой я могу думать - просто отключите кнопку на короткое время, например, 1-2 секунды. Если это сработает, никто не увидит задержку, и если это не так, они не смогут слишком часто ее нажимать.
private var _requestStore:Dictionary = new Dictionary(true);
private var _timer:Timer = new Timer(10);
. . .
_timer.addEventListener(TimerEvent.TIMER, timerHandler);
. . .
public function openURL(url:String):void
{
var request:URLRequest = new URLRequest(url);
_requestStore[request] = true;
_timer.start();
navigateToURL(request);
}
private function timerHandler(event:TimerEvent):void
{
var found:Boolean;
for (var o:Object in _requestStore)
{
found = true;
break;
}
if (!found) // the request got disposed
}
Вот чего боялся. О JS, я не знаю, не эксперт в этой области, но, возможно, есть какой-то способ узнать, когда файл готов к загрузке (открывается диалоговое окно загрузки браузера. Я попробую погулять позже. – randomUser56789