Я обнаружил, что это распространенная проблема, но кажется, что после поиска в Google нет очевидного решения.
На моей странице какое-то действие пользователя вызовет запрос AJAX. В YUI 2.X код выглядит следующим образом:
Connect.asyncRequest("POST", url,
{
'failure' : function() { alert('failed'); },
'success': function() { doSuccess(); },
'scope": this,
},
dataStr);
Когда запрос AJAX терпит неудачу, я хотел бы открыть диалоговое окно (не обязательно предупреждение), чтобы показать сбой. Однако, если запрос AJAX занимает несколько секунд, и я нажимаю кнопку «Обновить», чтобы перезагрузить страницу, всегда появляется диалоговое окно. Это не хорошо. Поэтому я хочу подавить диалог при перезагрузке.
Когда страница перезагружается, обратный вызов «сбой» будет вызван с объектом {status: 0, statusText: 'сбой связи'}. Это не отличается от других видов сбоев соединения. Таким образом, я не могу судить, является ли это фазой выгрузки на основе объекта обратного вызова.
В настоящее время мой обходной путь заключается в прослушивании события «перед выгрузкой».
Event.on(window, 'beforeunload', function() { isUnloading = true; });
Обратный вызов ошибки проверяет, показывать ли диалоговое окно на основе значения isUnloading.
Это работает, но событие «перед выгрузкой» не является стандартным. Есть ли лучший способ справиться с таким случаем?
Спасибо
unload
вместоbeforeunload
? По крайней мере, это было бы стандартным событием. - person casablanca   schedule 15.09.2010