Skip to content

Instantly share code, notes, and snippets.

@tectiv3
Forked from excalq/gist:2961415
Last active October 3, 2016 13:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tectiv3/381580c911d7950e0d0dc9665dc27928 to your computer and use it in GitHub Desktop.
Save tectiv3/381580c911d7950e0d0dc9665dc27928 to your computer and use it in GitHub Desktop.
Javacript: Set or Update a URL/QueryString Parameter, and update URL using HTML history.replaceState()
// Explicitly save/update a url parameter using HTML5's replaceState().
var updateQueryStringParam = function (key, value) {
var baseUrl = [location.protocol, '//', location.host, location.pathname].join(''),
urlQueryString = document.location.search,
newParam = key + '=' + value,
params = '?' + newParam;
// If the "search" string exists, then build params from it
if (urlQueryString) {
keyRegex = new RegExp('([\?&])' + key + '[^&]*');
// If param exists already, update it. If value is undefined - unset it
var match = urlQueryString.match(keyRegex);
if (match !== null) {
params = urlQueryString.replace(keyRegex, value == undefined ? (match[1] == '?' ? '?' : ''): "$1" + newParam);
} else { // Otherwise, add it to end of query string
params = urlQueryString + (value != undefined ? '&' + newParam : '');
}
}
params = params.replace('?&', '?');
window.history.replaceState({}, "", baseUrl + params);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment