URLLoader отменяет загрузку при любом событии браузера

У меня есть флэш-элемент на странице, который загружает диаграмму на основе некоторых сложных запросов, загрузка которых может занять до минуты. Я вызываю запрос с этим кодом:

var chartData:URLLoader = new URLLoader();
chartData.addEventListener(Event.COMPLETE, onLoaded);
chartData.addEventListener("httpStatus", onHttpStatus);
chartData.load(new URLRequest(chartURL));

Я прослушиваю полное событие или любое событие ошибки сервера.

Моя проблема заключается в том, что пользователь хочет перейти на другую страницу, пока флэш-память загружает URL-адрес: браузер ожидает полной загрузки URL-адреса, прежде чем принять запрос пользователя. Как я уже сказал, загрузка этой диаграммы может занять до минуты, и моих пользователей немного раздражает ожидание, если они хотят сменить страницу.

Вот мой вопрос: есть ли событие для прослушивания любого события из браузера (нажмите на другую ссылку, нажмите кнопку «назад» в браузере...)? Если я ошибаюсь в своем способе сделать это, не стесняйтесь сказать мне, я действительно не привык программировать во флэш-памяти.

Спасибо.


person Remiz    schedule 23.02.2010    source источник


Ответы (1)


Кажется, я понимаю, что вы описываете. Некоторые вещи, которые вы, возможно, захотите попробовать:

HTTP-сервер загрузки файлов

Если файлы очень большие, вы можете загрузить их на другой HTTP-сервер, например Nginx. Ознакомьтесь с модулем загрузки Nginx (я уверен, У апача тоже самое). Это в основном позволяет вам загружать файлы, не заставляя пользователя чувствовать влияние вообще.

Единственная проблема заключается в том, что это довольно сложно, и вы не будете знать, когда файл будет загружен. Но у них есть примеры того, как показать отображение индикаторов выполнения загрузки с помощью Nginx, используя Javascript, чтобы вы могли сделать что-то подобное, а по завершении (в javascript) отправить сообщение во flash, которое вызывает что-то вроде вашего обработчика Event.COMPLETE.

События браузера

Есть события браузера, которые нужно перехватывать с помощью Javascript, чтобы пользователь не мог покинуть страницу до завершения загрузки (не рекомендуется, так как это может раздражать пользователя):

  • один выход
  • закрыть
  • onblur (когда кликают где-то еще)

Посмотрите на этот пример: Javascript при закрытии: Предупредите пользователя.

Надеюсь, это поможет, Лэнс.

person Lance Pollard    schedule 24.02.2010
comment
На самом деле все наоборот, я хочу, чтобы флэш перестал загружаться, когда пользователь нажимает на что-то еще... Но я думаю, что ваша подсказка с захватом событий браузера в javascript может быть хорошим решением для отправки этой информации в мой файл флэш-памяти. Спасибо, я попробую это. - person Remiz; 24.02.2010