Shl*_*emi 148
这应该工作(没有测试!)
var url = window.location.href;
if (url.indexOf('?') > -1){
url += '¶m=1'
}else{
url += '?param=1'
}
window.location.href = url;
Run Code Online (Sandbox Code Playgroud)
Bo *_*sen 131
比接受的答案短,做同样的事,但保持简单:
window.location.search += '¶m=42';
Run Code Online (Sandbox Code Playgroud)
我们不必更改整个URL,只需更改查询字符串,称为位置的搜索属性.
为搜索属性分配值时,浏览器会自动插入问号并重新加载页面.
yey*_*eyo 65
这里的大多数答案都表明应该将参数附加到URL,类似于以下代码段或类似的变体:
location.href = location.href + "¶meter=" + value;
Run Code Online (Sandbox Code Playgroud)
对于大多数情况,这将非常有效.
然而
在我看来,这不是将参数附加到URL的正确方法.
因为建议的方法不测试参数是否已经在URL中设置,如果不小心,可能最终会有一个非常长的URL,同一个参数重复多次.即:
https://stackoverflow.com/?¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1
Run Code Online (Sandbox Code Playgroud)
在这一点上是问题的开始.建议的方法可以并且将在多次页面刷新后创建一个非常长的URL,从而使URL无效.有关长URL的更多信息,请点击此链接.不同浏览器中URL的最大长度是多少?
这是我建议的方法:
function URL_add_parameter(url, param, value){
var hash = {};
var parser = document.createElement('a');
parser.href = url;
var parameters = parser.search.split(/\?|&/);
for(var i=0; i < parameters.length; i++) {
if(!parameters[i])
continue;
var ary = parameters[i].split('=');
hash[ary[0]] = ary[1];
}
hash[param] = value;
var list = [];
Object.keys(hash).forEach(function (key) {
list.push(key + '=' + hash[key]);
});
parser.search = '?' + list.join('&');
return parser.href;
}
Run Code Online (Sandbox Code Playgroud)
使用此功能,您只需执行以下操作:
location.href = URL_add_parameter(location.href, 'param', 'value');
Run Code Online (Sandbox Code Playgroud)
location.href = location.href + "¶meter=" + value;
Run Code Online (Sandbox Code Playgroud)
如果您正在为现代浏览器开发,而不是自己解析 url 参数 -您可以使用内置URL
函数为您执行此操作:
const parser = new URL(url || window.location);
parser.searchParams.set(key, value);
window.location = parser.href;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
209778 次 |
最近记录: |