У меня есть Flash-игра, в которой я пытаюсь сохранить состояние, когда пользователь закрывает вкладку браузера. Она использует следующий код JQuery:Как сделать запрос на разгрузку через браузер?
//Called from Flash when window closes
function sendRequest(url, params) {
$.ajax({
type: "POST",
async: false,
url: url,
data: params
})
}
$(window).unload(function() {
//Make Flash attempt to save the game when the window closes.
//Flash gets the necessary data and calls sendRequest()
document["flashGame"].saveBeforeUnload();
});
- Firefox: Работает правильно
- Chrome: корректно работает при перегрузке но не тогда, когда закрытия вкладки или закрытия браузера
- IE (все версии): не работает вообще
I wan он работает во всех браузерах правильно, но самое главное - Chrome (у многих наших пользователей есть IE).
Flash правильно вызывает sendRequest (во всех браузерах, проверенных с предупреждением), поэтому я не верю, что проблемы возникли из Flash, но это может быть.
Я не думаю, что вы можете и не думать, что вы должны полагаться на .unload, если пользователь хочет закрыть браузер, который хочет закрыть браузер. Если ваш запрос займет больше нескольких мс для сохранения, если браузер будет ждать? Почему бы не сохранить игру, скажем, 30-секундный таймер, так что самый длинный из них будет 30 секунд, тогда вам не нужно беспокоиться о событии разгрузки. – dstarh
@dstarh: Мы уже сохраняем игру на таймере. Целью этого является предотвращение проигрыша игрокам последних нескольких секунд. Часто эти последние действия важны. – Fragsworth
, так что вы говорите, что человек, нажимая на X, чтобы закрыть окно своего браузера, должен ожидать, что все, что они сделали за последние несколько секунд, должно быть сохранено? Я думаю, что для обучения пользователю нажать кнопку «Сохранить», а затем закрыть браузер, лучше потратить время.Нам нужно заставить пользователей отказаться от менталитета «Я вытащил шнур питания со стены, почему не все спасло ???? !!! ???» – dstarh