2011-11-17 2 views
0

사용자가 일부 활동 (추가/업데이트/삭제)을 수행하고 페이지를 언로드하면 실제로 새로 고침/탐색하는 페이지가 있습니다. 데이터를 저장하기 위해 AJAX 호출을합니다. 다음은 코드입니다.AJAX가 onbeforeunload를 호출하여 데이터를 저장합니다.

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"를 iPad 용으로 "페이지 숨기기"로 변경해 보았지만 새로 고침 후에도 데이터가 반영되지 않습니다 ..

또한 AJAX 호출을 추가하는 것은 실제로 DWR (직접 웹 원격) 호출입니다.

이 문제를 해결할 수있는 방법을 제안하십시오.

답변

0

당신이 할 수있는 일은 그가 전에 저장하고 싶은지 사용자에게 묻는 것입니다 (이것은 일부 페이지가 onbeforeunload와 스팸 메일에 새 창을 열어 볼 수 있기 때문입니다)! 심지어하지 않습니다

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

나는 최선의 해결책은 사용자가 페이지를 입력하면 삭제됩니다 coockie에서 변경된 데이터를 저장하는 것입니다 생각하고 datas는

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 
+0

답장을위한 Thx ... "onbeforeunload"에서 사용자에게 메시지를 표시하도록 요청하는 것인지 확실하지 않습니다 ... 그렇다면 실제로 데이터를 저장해야합니다. . coz는 데이터를 저장하도록 코딩 된 단일 장소입니다 ... 또한 저장 단추 등을 추가하는 것과 같은 동작을 수정하지 못합니다 ... – testndtv

+0

ok 내 대답을 수정했습니다 – noob

+0

Thx again ...하지만 당신이 쿠키로 무엇을하려하는지 이해하지 못했습니다 ... 어떤 시점에 쿠키를 저장합니까? 페이지를 언로드하는 중입니까? 예, 이전과 같은 문제 (예 : 페이지 숨기기 사용)가 가능하지 않은 것입니까? – testndtv

0

모바일 사파리를 저장 onbeforeunload를 지원하십시오.

관련 문제