9

如果我有一个链接正在被history.pushState({}, "", link);我的函数更改link,例如page.php?value=1&value2=2有没有办法只更改value2withpushState()函数而不是更改整个链接?

4

3 回答 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 回答