更改 url 而无需重新加载页面

Posted

技术标签:

【中文标题】更改 url 而无需重新加载页面【英文标题】:Change the url without need to reload the page 【发布时间】:2016-01-12 05:27:44 【问题描述】:

我尝试更改页面的 url 而无需重新加载页面。如果我在控制台中尝试此操作,则 URL 正在更改:

if (localStorage.getItem('product') !== null) 
    storedVariable = localStorage.getItem('product');
    url = window.location.href;
    url += '?product=' + storedVariable;

window.history.pushState("", "", url);

但是,当我将此代码放入谷歌标签管理器时,我的页面的 URL 是默认的。我该如何解决?

【问题讨论】:

***.com/a/12446376 【参考方案1】:

可能与:mdn History_API

pushState() 接受三个参数:状态对象、标题(当前被忽略)和(可选)URL。让我们更详细地检查这三个参数:

state 对象 — 状态对象是一个 javascript 对象,它与 pushState() 创建的新历史条目相关联。每当用户导航到新状态时,都会触发一个 popstate 事件,并且该事件的 state 属性包含历史条目的 state 对象的副本。

状态对象可以是任何可以序列化的对象。因为 Firefox 将状态对象保存到用户的磁盘,以便在用户重新启动浏览器后可以恢复它们,所以我们对状态对象的序列化表示施加了 640k 字符的大小限制。如果将序列化表示大于此的状态对象传递给 pushState(),则该方法将抛出异常。如果您需要更多空间,建议您使用 sessionStorage 和/或 localStorage。

【讨论】:

对不起,我不知道谷歌标签管理器,但也许直接提供它的网址?

以上是关于更改 url 而无需重新加载页面的主要内容,如果未能解决你的问题,请参考以下文章

根据无需重新加载页面加载的 URL 隐藏/显示 div

更改地址栏中的完整 URL,无需重新加载页面

更改浏览器 URL 而无需在 UI 上实际加载任何内容

更改 URL 而不用 <a href=" "> 重新加载页面

如何在不重新加载页面的情况下更改 URL?

使用剃须刀页面调用服务器方法而无需重新加载页面