Функции для работы с Get параметрами
// Возвращает значение get папраметра или 'undefined' в случае его отсутствия
function getQueryParam(key) {
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/{}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
var s = window.location.search;
s = s.match(new RegExp('[?&]' + escapeRegExp(key) + '=([^&=]+)'));
return s ? s[1] : undefined;
}
// Устанавливает значение get папраметра через history API (без перехода и изменения страницы)
function setQueryParam(key, val) {
function setNewUrl(getString) {
history.pushState({}, '', window.location.pathname + getString);
}
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/{}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
if (!window.location.search.length || (window.location.search.length === 1)) return setNewUrl('?' + key + '=' + val);
var currentKeyValue = getQueryParam(key);
if (typeof currentKeyValue === 'undefined') return setNewUrl('&' + key + '=' + val);
var s = window.location.search;
s = s.replace(new RegExp('([?&])'+escapeRegExp(key)+'=[^&=]+'),'$1'+key+'='+val);
return setNewUrl(s);
}