I relied a little on the answer from @SergioBarros.
This solution will, before taking the parameters of the URL, take the fragment of it, then pick up the list of parameters, and finally build a parameter object. All parameters will be saved to this object if the query ?
exists.
In the end, to read the parameters of the URL simply index the object params
, just as you index $_POST
in PHP!
params["nome_do_campo_html"];
params.nome_do_campo_html;
var url = location.href;
// Ignora o fragmento da URL
var noFrag = url.split('#')[0];
// Pega a lista de parâmetros
var query = noFrag.split('?')[1];
// Cria um objeto
// para guardar os parâmetros
var params = {};
// Checa se a lista de parâmetros
// existe
if (query) {
// Faz a separação dos parâmetros
let offParams = query.split('&');
// Vamos iterar os parâmetros!
for (let param of offParams) {
// Checa se o parâmetro não está vázio
if (param.length) {
// Pega a índice do '='
let assignIndex = param.indexOf('=');
let key, value;
// Checa se o '=' existe
if (assignIndex >= 0) {
// Pega o nome do parâmetro
key = param.substring(0, assignIndex);
// Pega o valor (depois de '=')
value = param.substring(assignIndex + 1) || true;
} else {
// O nome do parâmetro...
// realmente pertence à @param.
key = param;
// O valor padrão será true
value = true;
}
// Por fim guardamos o parâmetro
// no objeto params
params[key] = value;
}
}
}
Ah! And another alternative is to use the URLSearchParams
interface to interpret the URL query and use the URLSearchParams#get
method to read a parameter:
var noFrag = location.href.split('#')[0];
var urlQuery = noFrag.split('?')[1];
if (urlQuery) {
var searchParams = new URLSearchParams(urlQuery);
// Exemplo de uso !
var myParam = searchParams.get('nome');
}
This interface is implemented in current browsers.