2011-11-17 68 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的「pagehide」,但仍然沒有反映數據刷新後。

也只是添加AJAX調用實際上是一個DWR(直接Web Remoting)調用。

請建議我如何解決這個問題。

回答

0

只有你可以在onbeforeunload事件中做的事情是詢問用戶他是否想要保存之前(這是因爲一些頁面可能會打開一個新的窗口onbeforeunload和垃圾郵件與它)!

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

我認爲最好的解決辦法是,當用戶進入頁面存儲在其中將被刪除coockie更改的數據和的數據都是保存

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 for your reply ...我不太確定你是否只是要求我在「onbeforeunload」上向用戶顯示一條消息......如果是這樣的話,我還需要實際保存數據。 .coz這是我編碼保存數據的單一位置...另外,我將無法對該行爲進行任何修改...例如添加保存按鈕或其他內容... – testndtv

+0

確定我修改了我的答案 – noob

+0

Thx再次......但我不太明白你想要用cookie來做什麼......就像我們在什麼時候將數據保存到cookie中一樣......是否在頁面卸載期間?如果是的話,我們是不是可能面臨同樣的問題(即使用頁面隱藏) – testndtv

0

移動Safari瀏覽器甚至不完全支持onbeforeunload。