You can change the URL in the browser with history.pushState
. To generate a variable number, you can take system time with new Date().getTime()
and put in the URL preserving past variables.
The URL in the browser would look something like:
example.com/?1520231465457
The code would look like this:
document.addEventListener("DOMContentLoaded", function(){
var url_short = new Date().getTime(),
url_ = location.href,
param = url_.substring(url_.lastIndexOf("/")+1, url_.length),
params = ['layout','sidebar']; // insira aqui os nomes das variáveis
history.pushState(null, '', '?'+url_short);
for(var y=0; y<params.length; y++){
if(param.indexOf(params[y]) != -1){
var var_ = url_.substring(url_.indexOf(params[y])+params[y].length+1,url_.length).match(/^(\d|\w){1,}/)[0],
a_ = document.body.querySelectorAll("a");
document.body.querySelector("#"+params[y]).value = var_;
for(var x=0; x<a_.length; x++){
a_[x].href += (a_[x].href.indexOf("?") == -1 ? "?" : "&")+params[y]+"="+var_;
}
}
}
var sels = document.querySelectorAll("select");
for(var x=0; x<sels.length; x++){
sels[x].addEventListener("change", function(){
var sId = this.id,
sVa = this.value;
if(sVa && url_.indexOf(sId) == -1){
location.href = url_+(url_.indexOf("?") == -1 ? "?" : "&")+sId+"="+sVa;
}else if(sVa && url_.indexOf(sId+"="+sVa) == -1){
var var_ = url_.substring(url_.indexOf(sId)+sId.length+1,url_.length).match(/^(\d|\w){1,}/)[0];
location.href = url_.replace(sId+"="+var_, sId+"="+sVa);
}
});
}
});
Test page.
For what purpose to do this ?
– Alex
@Marcelorafael to short the URL with the variables passed.
– John Quimera
You can convert the parameters to
base64
with thebtoa
, but I’m telling you, it’s not gonna go down.– Valdeir Psr