如果我有一个链接正在被history.pushState({}, "", link);
我的函数更改link
,例如page.php?value=1&value2=2
有没有办法只更改value2
withpushState()
函数而不是更改整个链接?
问问题
18195 次
3 回答
5
如果您尝试更改 URL 而不向历史对象添加其他条目,您可以尝试replaceState
.
history.replaceState({value: 1, value2: X}, "title", "page.php");
于 2012-05-02T21:17:22.410 回答
2
不,因为查询字符串是 URL 的一部分。如果您确实不需要出于服务器的目的传递这些值,则可以将它们包含在历史状态对象本身中,然后您可以使用pushState()
. 例如:
history.pushState({value: 1, value2: 2}, "Title", 'page.php');
history.pushState({value: 1, value2: 'new value'}, "Title");
于 2012-05-02T20:25:20.690 回答
2
您可以使用这个有用的函数来更改查询字符串参数值:
function updateParam(url, param, value)
{
var re = new RegExp(param+"(.+?)(&|$)","g");
return url.replace(re, param+'='+value)
}
于 2012-05-02T20:35:15.357 回答