У меня есть веб-приложение, которое широко использует идентификатор фрагмента для обработки «состояния».
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 (содержит "example")
examplesite.com/#time=2003;vid=4;vid=7;modified=5 (содержит «измененные»)
examplesite.com/#time=2003;vid=4;vid=7 (не содержит "модифицированные" или "примеры")
Как бы вы написали управляющую структуру, которая извлекает переменные из хеша, когда приложение загружает и проверяет вышеуказанные условия?
3) Как сохранить предыдущие состояния и как вызвать изменение состояния при нажатии кнопки возврата?