我在我的ajax-app中使用pushStates从一个“页面”导航到另一个“页面”。现在,我想看看我来自哪个页面。但document.referrer
始终返回""
。或者,当我从另一个页面(链接的位置)打开我的应用程序时,我从另一个页面获取了URL。
不应该这些线......
history.pushState({}, "Some title", "/some/valid/url/1");
history.pushState({}, "Some title", "/some/valid/url/2");
...生成这样的推荐人:
http://somedomain.com/some/valid/url/1
或者换句话说:有没有办法相应地设置document.referrer
,或者至少将其重置为""
?
注意:我正在寻找解决方案而不在某些变量中缓存以前的URL。我需要一些真正改变document.referrer
的东西,因为我无法改变依赖它的脚本。
答案 0 :(得分:2)
简答:使用window.location
代替history.pushState
更长的答案:
document.referrer
根据MDN:"如果用户直接导航到页面(不是通过链接,但是,例如,通过书签)"
直接操纵history
状态不会被视为链接之后。您可以通过更新window.location
(MDN)模拟链接点击,这也会自动更新历史记录。
例如,使用https://github.com/kanaka/mal/
加载标签。然后一次键入以下一行(否则它们都在单个javascript执行上下文中运行,并且只应用最后一个位置更新)
console.log(history.length) // 2
console.log(document.referrer) // ""
window.location = "/kanaka/mal/tree/master/ada"
console.log(history.length) // 3
console.log(document.referrer) // "https://github.com/kanaka/mal"
window.location = "/kanaka/mal/tree/master/python"
console.log(history.length) // 4
console.log(document.referrer) // "https://github.com/kanaka/mal/tree/master/ada"