Content deleted Content added
Mike Dillon (talk | contribs) No edit summary |
Mike Dillon (talk | contribs) m change unescape to decodeURIComponent |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1:
/* <pre><nowiki> */
//
// if no URL is provided, uses the current URL. Caches parsed parameters between invocations.
var getParameterMap = (function () {
// URL parameters cache: key=url, value=paramMap
var params = {};▼
var kvs = ___location.search.replace(/^\?/, "").split("&");▼
for (var i in kvs) {▼
var kv = kvs[i].split("=", 2);▼
var key = kv[0];▼
// If no URL
url = ___location.href;
// If the parameters for this URL have already been parsed, return them
▲ if (!params[key]) {
if
▲ }
// Set up a
// Split the URL from the query string
var search = url.split("?", 2)[1];
if (search) {
// Split query string on "&"
▲ for (var i in kvs) {
// Split each key-value pair on the equals sign
▲ var kv = kvs[i].split("=", 2);
▲ var key = kv[0];
var value = decodeURIComponent(kv[1]);
// On the first occurence of a key, seed an empty array into paramMap
if (!paramMap[key]) {
paramMap[key] = [];
}
// Push the new value onto the value list for the key in paramMap
paramMap[key].push(value);
}
}
}▼
// Cache the paramMap to avoid parsing for all parameter requests
▲ return function () { return params };
urlParamMaps[url] = paramMap;
return paramMap;
▲ };
})();
// function getParameterValues(key, url):
// from the given URL; if no URL is provided, uses the current URL.
return getParameterMap()[key];▼
// Returns null if the parameter was not in the URL.
▲ return getParameterMap(url)[key];
}
// function getParameterValues(key, url): Extracts the values for a particular key
function getParameter(key) {▼
// from the given URL; if no URL is provided, uses the current URL.
▲ var values = getParameterValues(key);
// If there is more than one value for the given key, the first value is returned.
// Returns null if the parameter was not in the URL.
▲function getParameter(key, url) {
var values = getParameterValues(key, url);
return values ? values[0] : null;
}
// function getParameterNames(url): Extracts the list of parameter
// from the given URL; if no URL is provided, uses the current URL.
function getParameterNames(url) {
var names = [];
for (var n in getParameterMap(url)) {
names.push(n);
}
|