User:Mike Dillon/Scripts/params.js
From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. In Internet Explorer and Firefox, hold down the Ctrl key and click the Refresh or Reload button. Opera users have to clear their caches through Tools→Preferences, see the instructions for Opera. Konqueror and Safari users can just click the Reload button.
/* <pre><nowiki> */ // function getParameterMap(url): Parses a URL and extracts the query string parameters; // 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 urlParamMaps = {}; return function (url) { // If no URL is passed in, use the current page's URL if (!url) { url = location.href; } // If the parameters for this URL have already been parsed, return them if (urlParamMaps[url]) return urlParamMaps[url]; // Set up a new map for the parameters to be parsed var paramMap = {}; // Split the URL from the query string var search = url.split("?", 2)[1]; if (search) { // Split query string on "&" var kvs = search.split("&"); 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 urlParamMaps[url] = paramMap; return paramMap; }; })(); // function getParameterValues(key, url): Extracts the list of values for a particular key // from the given URL; if no URL is provided, uses the current URL. // Returns null if the parameter was not in the URL. function getParameterValues(key, url) { return getParameterMap(url)[key]; } // function getParameterValues(key, url): Extracts the values for a particular key // from the given URL; if no URL is provided, uses the current URL. // 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 names // 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); } return names; } /* </nowiki></pre> */