72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
|
/**
|
||
|
* @prototype QueryParams
|
||
|
* This prototype contains methods to manipulate the query parameters of the
|
||
|
* web pages url
|
||
|
*/
|
||
|
function QueryParams () {}
|
||
|
|
||
|
/**
|
||
|
* get an object value with all parameters in the query params
|
||
|
* @return {Object} query object containing key/values
|
||
|
*/
|
||
|
QueryParams.prototype.getQuery = function () {
|
||
|
var search = window.location.search.substring(1); // skip the ? character
|
||
|
var params = search.split('&');
|
||
|
var query = {};
|
||
|
for (var i = 0, iMax = params.length; i < iMax; i++) {
|
||
|
var keyvalue = params[i].split('=');
|
||
|
if (keyvalue.length == 2) {
|
||
|
var key = decodeURIComponent(keyvalue[0]);
|
||
|
var value = decodeURIComponent(keyvalue[1]);
|
||
|
query[key] = value;
|
||
|
}
|
||
|
}
|
||
|
return query;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Set query parameters parameters
|
||
|
* @param {Object} query object with strings
|
||
|
*/
|
||
|
QueryParams.prototype.setQuery = function (query) {
|
||
|
var search = '';
|
||
|
|
||
|
for (var key in query) {
|
||
|
if (query.hasOwnProperty(key)) {
|
||
|
var value = query[key];
|
||
|
if (value != undefined) {
|
||
|
if (search.length) {
|
||
|
search += '&';
|
||
|
}
|
||
|
search += encodeURIComponent(key);
|
||
|
search += '=';
|
||
|
search += encodeURIComponent(query[key]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
window.location.search = (search.length ? ('#' + search) : '');
|
||
|
};
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Retrieve a parameter value from the query params
|
||
|
* @param {String} key
|
||
|
* @return {String} value undefined when the value is not found
|
||
|
*/
|
||
|
QueryParams.prototype.getValue = function (key) {
|
||
|
var query = this.getQuery();
|
||
|
return query[key];
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Set an query parameter
|
||
|
* @param {String} key
|
||
|
* @param {String} value
|
||
|
*/
|
||
|
QueryParams.prototype.setValue = function (key, value) {
|
||
|
var query = this.getQuery();
|
||
|
query[key] = value;
|
||
|
this.setQuery(query);
|
||
|
};
|