Forum Moderators: open
// let's say the page is foo/?id=123&h=456&lorem=ipsum&z=789
var saveName = location.pathname;
var params = new URLSearchParams(location.search);
for (let i of ['h', 's', 'z', 'start', 'startview', 'return_here'])
params.delete(i);
if (params.toString())
saveName += '?' + params.toString();
// result
// foo/?id=123&lorem=ipsum var saveName = location.pathname,
removeVars = ['h', 's', 'z', 'start', 'startview', 'return_here'],
i;
// Internet Explorer
if (window.document.documentMode) {
var qs = location.search,
pairs = qs.substring(1).split("&"),
params = {},
pair;
for (i in pairs) {
if (pairs[i] === '') continue;
pair = pairs[i].split("=");
params[decodeURIComponent(pair[0])] =
decodeURIComponent(pair[1]);
}
for (i of removeVars)
delete params[i];
if (Object.keys(params).length > 0)
saveName += '?';
for (i in params)
saveName += i + '=' + params[i] + '&';
// remove trailing ? or &
saveName = saveName.replace(/[?&]+$/, '');
}
// everyone else
else {
var params = new URLSearchParams(location.search);
for (i of removeVars)
params.delete(i);
if (params.toString())
saveName += '?' + params.toString();
} var saveName = location.pathname,
removeVars = ['h', 's', 'z', 'start', 'startview', 'return_here'],
i;
// Internet Explorer
if (window.document.documentMode)
$.getScript("/path/to/min.js"}); // I already use jQuery so it's OK
// everyone else
else {
var params = new URLSearchParams(location.search);
for (i of removeVars)
params.delete(i);
if (params.toString())
saveName += '?' + params.toString();
} <?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident')) {
echo "<script src='/path/to/min.js'></script>";
}
echo <<<EOF
<script>
var saveName = location.pathname,
removeVars = ['h', 's', 'z', 'start', 'startview', 'return_here'],
i;
var params = new URLSearchParams(location.search);
for (i of removeVars)
params.delete(i);
if (params.toString())
saveName += '?' + params.toString();
</script> if ('URLSearchParams' in window) { ... } var saveName = location.pathname,
removeVars = ['h', 's', 'z', 'start', 'startview', 'return_here'],
i;
// Internet Explorer
if (!window.URLSearchParams)
$.getScript("/path/to/min.js"}); // I already use jQuery so it's OK
var params = new URLSearchParams(location.search);
for (i of removeVars)
params.delete(i);
if (params.toString())
saveName += '?' + params.toString(); <?php
$qs = json_encode($_GET, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);
echo <<<EOF
<script>
// ?id=123&h=456&lorem=ipsum&z=789 becomes
// {"id":123,"h":456,"z":789}
var qs = JSON.parse('$qs');
</script>
// then in the separate JS file
var saveName = location.pathname;
// use "window.qs" in case "qs" is not defined prior, so this is a backup plan
if (!window.qs)
// convert the results of URLSearchParams to a normal Object
var qs = Object.fromEntries(new URLSearchParams(location.search));
// continue if there's a query string
if (Object.values(qs).length > 0) {
// define params to be removed as an Object; values are 1 just because they
// have to be set to something and it's shorter than "true"
var removeObj = {
'h' : 1,
's' : 1,
'z' : 1,
'start' : 1,
'startview' : 1,
'return_here' : 1
}
saveName += '?';
for (let param in qs) {
// add to saveName if param isn't in removeObj
if (!removeObj[param])
saveName += param + '=' + qs[param] + '&';
}
}