我试图将页面的状态存储在哈希中。
这在IE和FF中有效,但在Chrome中似乎无能为力
$(document).ready(function()
{
window.onbeforeunload = savePageState;
});
function savePageState()
{
var currentTab = _tabbing.getCurrentTab();
var mapState = _mapAdapter.getMapState();
window.location.hash =
'reload=' + currentTab +
'&mapType=' + mapState.MapType.getName() +
'&lat=' + mapState.Latitude +
'&long=' + mapState.Longitude +
'&zoom=' + mapState.ZoomLevel;
return;
}
Chrome浏览器中有一个古怪的地方,可以阻止我更新哈希吗?有没有更好的方法来保存页面状态?仅对于后退按钮,它需要保存。
最佳答案
建议您使用jQuery BBQ plugin,它为您管理哈希。
$.bbq.pushState({
reload: currentTab,
mapType: mapState.MapType.getName(),
lat: mapState.Latitude,
long: mapState.Longitude,
zoom: mapState.ZoomLevel
});
BBQ处理合并哈希,因此它不会覆盖其他参数。例如,
#fun=yes
变为#fun=yes&reload=tab&...
接下来,您可以监听对哈希的更改:
$(window).bind('hashchange', function(e) {
var params = e.getState();
doStuff(params.lat, params.long);
});