UNPKG

boilerplate.js

Version:

Development Tools

148 lines (125 loc) 5.03 kB
// Gets Value Of A URL Parameter /* How To Use (if current URL is https://examplesite.com/download?filetype=pdf&name=testfile) var filetype = getParameterByName('filetype'); var filename = getParameterByName('name'); console.log(filetype); // 'pdf' console.log(filename); // 'testfile' --Or provide your own url-- var filetype = getParameterByName('filetype', 'https://examplesite.com/download?filetype=pdf&name=testfile'); var filename = getParameterByName('name', 'https://examplesite.com/download?filetype=pdf&name=testfile'); console.log(filetype); // 'pdf' console.log(filename); // 'testfile' */ function getParameterByName(name, url) { if (!name && !url) return queryParamsToObject(); if ( isURL(name) ) return queryParamsToObject(name); url = url || window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2]); } function checkParameterByName(key, value, url) { url = url || window.location.href; if (!value) return checkWithoutValue(key); try { var result = getParameterByName(key.toLowerCase(), url); if (value.toLowerCase() === result.toLowerCase()) { return true; } else { return false; } } catch (error) { return false; } function checkWithoutValue(key) { if (Parameter.get()[key] === null) return false; if (Parameter.get()[key] === undefined) return false; return true; } } function removeParameterByName(key, url) { let replace = false; if (!url) { url = window.location.href; replace = true; } let a = document.createElement('a'); a.href = url; let params = queryParamsToObject(a.href); delete params[key]; a.href = objectToQueryString(params, a.href); if (replace) window.history.replaceState({}, null, a.href); return a.href; } function setParameterByName(key, value, uri) { if (typeof key === 'object' && !value) return objectToQueryString(key); if (typeof key === 'object' && value) return objectToQueryString(key, value); var re = new RegExp("([?&])" + key + "=.*?(&|#|$)", "i"); let skip = true; if (uri) skip = false; uri = uri || location.href; if (value === undefined) { if (uri.match(re)) { skip && window.history.replaceState({}, null, uri.replace(re, '$1$2')); return uri.replace(re, '$1$2'); } else { skip && window.history.replaceState({}, null, uri); return uri; } } else { if (uri.match(re)) { skip && window.history.replaceState({}, null, uri.replace(re, '$1' + key + "=" + value + '$2')); return uri.replace(re, '$1' + key + "=" + value + '$2'); } else { var hash = ''; if (uri.indexOf('#') !== -1) { hash = uri.replace(/.*#/, '#'); uri = uri.replace(/#.*/, ''); } var separator = uri.indexOf('?') !== -1 ? "&" : "?"; skip && window.history.replaceState({}, null, uri + separator + key + "=" + value + hash); return uri + separator + key + "=" + value + hash; } } } function objectToQueryString(data, url) { if (url) { let a = document.createElement('a'); a.href = url; a.search = ''; url = a.href; Object.keys(data).forEach(key => url = setParameterByName(key, data[key], url)); return encodeURI(url); } else { Object.keys(data).forEach(key => setParameterByName(key, data[key])); } } function queryParamsToObject(url) { let a = document.createElement('a'); a.href = url || location.href; let search = a.search; var list = search.slice(1).split('&'), result = {}; list.forEach(function(keyval) { keyval = keyval.split('='); var key = keyval[0]; if (/\[[0-9]*\]/.test(key) === true) { var pkey = key.split(/\[[0-9]*\]/)[0]; if (typeof result[pkey] === 'undefined') { result[pkey] = []; } result[pkey].push(decodeURIComponent(keyval[1] || '')); } else { result[key] = decodeURIComponent(keyval[1] || ''); } }); return JSON.parse(JSON.stringify(result)); } window.Parameter = {}; window.Parameter.get = (name, url) => getParameterByName(name, url); window.Parameter.set = (key, value, uri) => setParameterByName(key, value, uri); window.Parameter.check = (key, value = null, url = null) => checkParameterByName(key, value, url); window.Parameter.remove = (key, url) => removeParameterByName(key, url);