1

我需要将 UI 状态保存在哈希片段中,我尝试了两种不同的方法:

1- 具有查询字符串格式的哈希片段

#a=foo&b=bar

然后使用自定义函数获取值:

getParam: function (parameter) {
    if(document.location.hash !== "") {
        var param = document.location.hash.substring(1).split("&");
        for(var i in param) {
            var keyValue = param[i].split('=');
            if(keyValue.length === 2 && keyValue[0] === parameter) {
                return $.trim(keyValue[1]);
            }
        }
    }
    return null;
}

2- 带有 json 对象的散列片段

#{"a":"foo","b":"bar"}

然后用

$.parseJSON(document.location.hash.substring(1))

什么是最好的方法?哈希片段格式是否有特定约定?

4

1 回答 1

2

最佳做法是不理会片段 ID。使用历史 API更改真实的查询字符串。

然后,当从头开始请求页面时,将其完全构建在服务器上。

这个:

  • 避免了在立即用 Ajax 数据替换大块基本页面之前加载基本页面的需要(这曾经使 Twitter Web 应用程序使用起来很糟糕,直到它们移动到历史 API)
  • 使链接对搜索引擎和其他非 JS 客户端友好
于 2013-03-28T10:51:28.260 回答