更改 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 而无需重新加载页面的主要内容,如果未能解决你的问题,请参考以下文章