ASP.NET Ajax – History Support 續
今天正好遇到一個已經快結束的項目需要添加Ajax History功能
項目並未使用微軟的Ajax,使用的是JQuery的Ajax,頁面加載完成後發出Ajax請求初始化。對於這種情況的改進方式如下:
pageLoad
$(document).ready(function () {
Sys.Application.add_navigate(onNavigate);
Sys.Application.add_load(onLoad);
});
onNavigate
function onNavigate(sender, e) {
//判斷是否為使用者觸發
//debugger;
if (window.userNavigated == undefined || userNavigated) {
restorePage(e.get_state());
}
}
onLoad處理首次進入頁面或者回退前進到首次進入頁面的數據加載
function loadPage() {
//your code
}
addHistoryPoint不變
function addHistoryPoint() {
var pageState = { "foo": "foo", "bar": "bar"};
var historyPointName = "blah";
window.userNavigated = false;
Sys.Application.addHistoryPoint(pageState, historyPointName);
window.userNavigated = true;
}
restorePage修改
function restorePage(pageState) {
//debugger;
if (!$.isEmptyObject(pageState)) {
// restore methord
}
else {
onLoad();
}
Sys.Application.remove_load(loadPage);
}
以上可以頁面內自由導航,也可以跨頁面導航回來。
這種改變後的方式,主要在於處理使用費微軟Ajax框架但還是使用ScriptManager管理History的情況。以前的方法缺點在於無法導航回到首次進入頁面的狀態。