onbeforeunload()
函數可能等待ajax結果並根據結果值移動到jsp或至少在卸載之前顯示消息?onbeforeunload等待ajax結果
是否有可能使用的setTimeout或一些自定義等待功能對於這個問題,或者我要考慮一些其他的工作流程
onbeforeunload()
函數可能等待ajax結果並根據結果值移動到jsp或至少在卸載之前顯示消息?onbeforeunload等待ajax結果
是否有可能使用的setTimeout或一些自定義等待功能對於這個問題,或者我要考慮一些其他的工作流程
據我所知,那是不可能的。 onbeforeunload
的功能非常有限,否則惡意網站可能會阻止您離開其網站。
附錄:可能會顯示一條消息,如'您要離開本頁面'。在這種情況下,beforeunload()
函數必須返回一個字符串。
例
window.onbeforeunload = function() {
return 'Are you sure about that?';
}
實際上,該消息包含ajax結果的一些內容。無論如何,我認爲這個工作流程不好,我將使用redirectAction並使用其他一些技巧顯示消息 – anu 2011-03-15 10:54:54
這是不好的想法顯示警報框等待來自ajax的響應。通常,您可以在ajax響應之後使用警報框留言來確認離開頁面。
爲了避免使用警報,你可以調用Ajax的同步例如
if(window.XMLHttpRequest) xmlHttpObj=new XMLHttpRequest();
else xmlHttpObj=new ActiveXObject("Microsoft.XMLHTTP");
if(xmlHttpObj){
xmlHttpObj.onreadystatechange=function(){
if(xmlHttpObj.readyState==4 && xmlHttpObj.status == 200){
// your logic required
}
}
xmlHttpObj.open("GET", "your request url", false); // used false for synchronous call
xmlHttpObj.send(null);
}
else{
alert("AJAX not support");
}
這是我的策略和對我的作品:
_number_of_active_ajax ++;
$.ajax({
url: REQUEST_URL,
timeout: 3000
})
.always(function() {
_number_of_active_ajax --;
});
window.onbeforeunload = function() {
if(_number_of_active_debounce > 0 || _number_of_active_ajax > 0)
return "Your question";
}
}
它會顯示一個消息如果頁面具有活動請求,請使用此選項。
也許與同步調用 – mplungjan 2011-03-15 10:37:05