html5 – 通过history.pushState()更新document.referrer

我在我的ajax-app中使用pushStates从一个“页面”导航到另一个“页面”.现在,我想看看我来自哪个页面.但是document.referrer总是返回“”.或者,当我从另一个页面(链接的位置)打开我的应用程序时,我从另一个页面获取了URL.

不应该这些线……

history.pushState({},“Some title”,“/ some / valid / url / 1”);

history.pushState({},“/ some / valid / url / 2”);

…产生这样的推荐人:

http://somedomain.com/some/valid/url/1

换句话说:有没有办法相应地设置document.referrer,或者至少将其重置为“”?

注意:我正在寻找解决方案而不在某些变量中缓存以前的URL.我需要一些真正改变document.referrer的东西,因为我无法改变依赖它的脚本.

解决方法

简答:使用window.location而不是history.pushState

更长的答案:

document.referrer根据MDN:“如果用户直接导航到页面(不通过链接,但是,例如,通过书签),则值为空字符串”

直接操纵历史状态不会被视为跟随链接.您可以通过更新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"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


h5页面是什么意思
html5复合选择器都有哪些
什么是html5响应式布局
h5页面制作策划怎么做
html5关系选择器有哪些
h5有哪些缓存机制
position中的sticky如何使用
h5页面制作用什么软件
h5链接怎么做
html5层次选择器有哪些
h5是什么意思
localstorage有哪些方法
h5怎么制作点击图标
h5怎么制作倒计时
h5怎么生成链接
h5表格边框怎么设置
h5兼容问题怎么解决
h5怎么做交互设计
h5怎么做进度条
h5怎么加链接