Hoje, encontrei a necessidade de substituir certos parâmetros no URL por JavaScript.
Copie o código do código da seguinte forma:
// URL de análise
função parseurl (url) {
var a = document.createElement ('a');
a.href = url;
Retornar {
Fonte: URL,
Protocolo: A.Protocol.Replace (':', ''),
Anfitrião: A.HostName,
Porto: A.Port,
Consulta: aearch,
Params: (function () {
var return = {},
seg = a.search.Replace (/^/?/, ',' ') .split (' & '),
len = seg.length, i = 0, s;
para (; i <len; i ++) {
if (! seg [i]) {continuação;}
s = seg [i] .split ('=');
Ret [s [0]] = s [1];
}
Retornar ret;
}) () ,,,
Arquivo: (a.pathname.match (/// ([^//?#]+) $/i) || [, ''] [1],
Hash: A.Hash.Replace ('#', ''),
Caminho: A.PathName.Replace (/^([^//])/, '/$ 1'),
Relativo: (a.href.match (/tps?: //////////////2s .+(.+)/) || [, ''] [1] ,,
segmentos: a.pathname.preplace (/^///, '') .split ('/')
};
}
// substitua o valor do parâmetro de mesmo nome em myurl
Função replicarlparams (myrl, newparams) {
/*
para (var x em myrl.params) {
para (var y em newparams) {
if (x.tolowercase () == y.tolowerCase ()) {) {
myurl.params [x] = newParams [y];
}
}
}
*/
para (var x em newParams) {
var hasmurlparams = false;
para (var y em myrl.params) {
if (x.tolowercase () == y.tolowerCase ()) {) {
myurl.params [y] = newParams [x];
Hasinmyurlparams = true;
Quebrar;
}
}
// o parâmetro que acabou sendo adicionado
if (! hasinmyurlparams) {
myurl.params [x] = newParams [x];
}
}
var _retult = myurl.protocol + ": //" + myurl.host + ":" + myurl.port + myurl.path + "?" ;;;;;;;;;;;;;;;;
para (var p em myurl.params) {
_Result + = (p + "=" + myurl.params [p] + "&");
}
if (_result.substr (_result.length -1) == "&") {{{
_Result = _Result.substr (0, _Result.Length -1);
}
ifrl.hash!
_Result + = "#" + myurl.hash;
}
Retornar _result;
}
// Saída auxiliar
Função w (str) {
document.write (str + "<br>");
}
var myurl = parseurl ('http://abc.com:8080/dir/index.html?id=255&m=hello#top'););
c
c
c
W ("Myurl.Query =" + Myurl.Query) // = '?
w ("myurl.params =" + myurl.params) // = objeto = {id: 255, m: hello}
c
w ("myurl.segments =" + myurl.segments) // = array = ['dir', 'index.html']]
c
c
w ("Myurl.source =" + myurl.source) // = 'http://abc.com:8080/dir/index.html?id=255&m=hello#top'
var _newurl = replyurlparams (myrl, {id: 101, m: "World", página: 1, "página": 2});
W ("<br> novo URL é:")
W (_newurl);