我有一个 Web 应用程序,它广泛使用片段标识符来处理“状态”。
examplesite.com/#$mode=direct$aa;map=t;time=2003;vid=4;vid=7
几个问题:
1) 将各种“location.hash 名称值对”分配给变量以跟踪状态的好方法是什么?
1a) 我应该创建一个对象来跟踪 js 中的状态还是为每个名称值对声明全局变量?
1b)是否有任何好的 jquery 插件来简化这个?
1c)如果我想跟踪称为“颜色”的东西 - 是否应该始终将其附加到片段(#)以及检查它是否已定义的正确方法是什么;下面的代码可以改进吗?
var color;
var hashString = location.hash;
var nvPairs = hashString.split(";");
var nvPair = new Array();
for (i = 0; i < nvPairs.length; i++)
{
var keyValuePair = nvPairs[i].split("=");
nvPair[keyValuePair[0]] = keyValuePair[1];
}
if (nvPair['color']) color = nvPair['color'];
1d)由于某些名称被使用了两次(上例中的“vid”) - 我怎样才能轻松地将它们存储为单独的变量?
2)我要特别注意4种不同的“哈希”:
examplesite.com/ (无哈希)
examplesite.com/#example=5 (包含“示例”)
examplesite.com/#time=2003;vid=4;vid=7;modified=5 (包含“修改”)
示例站点。 com/#time=2003;vid=4;vid=7 (不包含“修改”或“示例”)
当应用程序加载并检查上述条件时,您将如何编写一个从哈希中提取变量的控制结构?
3)如何存储先前的状态以及按下后退按钮时如何触发状态更改?