AJAX вызывает onbeforeunload для сохранения данных - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть страница, на которой пользователь выполняет некоторые действия (Добавить / Обновить / Удалить), и при выгрузке страницы (фактически обновляя / удаляя) я выполняю AJAX-вызов для сохранения данных.Ниже приведен код:

window.onbeforeunload = function () {
         someAjaxObj.saveFavorites(json,{async:false});  // use async:false else callback is returned to an unloaded page creating a dwr javascript error
   }

Теперь по некоторым причинам данные не сохраняются / отражаются после обновления на iPad Safari.Я попытался изменить «onbeforeunload» на «pagehide» для iPad, но после обновления данные не отображаются.

Также просто добавить AJAX-вызов - это вызов DWR (Direct Web Remoting).

Подскажите, пожалуйста, как я могу решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 02 октября 2013

Мобильное сафари даже не поддерживает onbeforeunload.

0 голосов
/ 17 ноября 2011

only , что вы можете сделать на событии onbeforeunload, спрашивать пользователя, хочет ли он сохранить ранее (это потому, что некоторые страницы могут открывать новое окно на onbeforeunload и спамить с ним)!

var saved = false;
window.onbeforeunload = function () {
    if (!saved) return "If you leave the page now your changes won't be saved.";
}

Я думаю, что лучшим решением было бы сохранить измененные данные в куках, которые будут удалены при входе пользователя на страницу и сохранении данных

function getCookie(name) {
var a = document.cookie.split(';');
for(var i = 0; i < a.length; i++) {
    var s = a[i];
    while (s.charAt(0)==' ') s = s.substring(1,c.length);
    if (s.indexOf((name + "=")) == 0) return s.substr((name + "=").length, s.length);
}
return null;
}
if (getCookie("save")) //save datas
...