我试图将页面的状态存储在哈希中。
这在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);
});

10-08 15:00