Парсинг URL хэша
// Задача, разобрать URL вида:
// domain.com/#user/videos/18?view=fullscreen&quality=1080
function parseUrl() {
// Получаем кусок пути, после #
var url = document.location.hash.replace('#',''),
// Получаем путь
path = url.split('?')[0].split('/'),
// Получаем массив пар 'key=value'
pairs = url.split('?')[1] ? url.split('?')[1].split('&') : false,
params = {},
i;
// собираем пары ключ значение в обьект.
if (pairs) {
for(i in pairs) {
pairs[i] = pairs[i].split('=');
params[pairs[i][0]] = pairs[i][1];
}
}
// Возвращаем обьект, содержащий всю инфу об URL
return {
path : path,
params : params
}
}
console.log(parseUrl().path); // ['user','videos','18'];
console.log(parseUrl().params); // { view : 'fullscreen', quality : 1080 }
Компиляция URL из обьекта
function compileUrl(url) {
var string = '#',
pairs = [],
i;
string += url.path.join('/');
for(i in url.params) pairs.push([i,url.params[i]].join('='));
if (pairs.length) string += '?'+pairs.join('&');
return string;
}
compuleURL({
path : ['user','videos','18'],
params : {
quality : 480
}
});
// Возвращает '#user/videos/18?quality=480'