如何在JavaScript中获取上一个URL?
有没有办法在JavaScript中获取上一个URL?大概是这样的:如何在JavaScript中获取上一个URL?,javascript,Javascript,有没有办法在JavaScript中获取上一个URL?大概是这样的: alert("previous url is: " + window.history.previous.href); 有这样的事吗?还是我应该把它储存在饼干里?我只需要知道,这样我就可以在没有锚的情况下从上一个URL转换到当前URL document.referrer 在许多情况下,如果用户通过点击链接进入当前页面(而不是直接在地址栏中键入,或者我相信在某些情况下,是通过提交表单?),您将获得用户访问的最后一个页面的URL。
alert("previous url is: " + window.history.previous.href);
有这样的事吗?还是我应该把它储存在饼干里?我只需要知道,这样我就可以在没有锚的情况下从上一个URL转换到当前URL
document.referrer
在许多情况下,如果用户通过点击链接进入当前页面(而不是直接在地址栏中键入,或者我相信在某些情况下,是通过提交表单?),您将获得用户访问的最后一个页面的URL。由指定
window.history
允许导航,但出于安全和隐私原因,不能访问会话中的URL。如果有更详细的URL历史记录,那么您访问的每个站点都可以看到您访问过的所有其他站点
如果您处理的是在您自己的站点上移动的状态,那么使用一种正常的会话管理技术(cookie数据、URL参数或服务器端会话信息)可能就不那么脆弱,而且肯定更有用。
<script type="text/javascript">
document.write(document.referrer);
</script>
文件。编写(文件。参考);
document.referer
符合您的目的,但它不适用于IE9之前的Internet Explorer版本
它将适用于其他流行浏览器,如Chrome、Mozilla、Opera、Safari等。
文档。referer
并非在所有情况下都与实际URL相同
我有一个应用程序,我需要建立一个有2个框架的框架集。一个框架是已知的,另一个是我链接的页面。似乎document.referer
是理想的选择,因为您不必将实际的文件名传递给框架集文档
但是,如果您以后更改底部框架页面,然后使用history.back()
它不会将原始页面加载到底部框架中,而是重新加载document.referer
,因此框架集消失,您返回到原始起始窗口
我花了一点时间才明白这一点。所以在历史数组中,
document.referer
不仅仅是一个URL,它显然也是一个referer窗口规范。至少,这是目前我能理解的最好的方式 如果想在不知道url的情况下转到上一页,可以使用新的历史api
history.back(); //Go to the previous page
history.forward(); //Go to the next page in the stack
history.go(index); //Where index could be 1, -1, 56, etc.
但您不能在不支持HTML5历史API的浏览器上操作历史堆栈的内容
有关更多信息,请参见使用Node.js和Express的用户可以设置一个会话cookie,该cookie将记住当前页面URL,从而允许您在下一次页面加载时检查引用者。下面是一个使用
express session
中间件的示例:
//Add me after the express-session middleware
app.use((req, res, next) => {
req.session.referrer = req.protocol + '://' + req.get('host') + req.originalUrl;
next();
});
然后,您可以检查是否存在推荐人cookie,如下所示:
if ( req.session.referrer ) console.log(req.session.referrer);
不要假设引用者cookie始终存在于此方法中,因为它在以前的URL是另一个网站、会话已清理或刚刚创建(首次加载网站)的实例中不可用。如果您正在编写web应用程序或单页应用程序(SPA)如果路由在应用程序/浏览器中进行,而不是往返于服务器,则可以执行以下操作:
window.history.pushState({prevUrl:window.location.href},null,“/new/path/in/your/app”)
然后,在新路由中,您可以执行以下操作来检索以前的URL:
window.history.state.prevUrl//您以前的url
这将导航到以前访问过的URL
javascript:history.go(-1)
如果有人来自React world,我最终使用
历史
-库、useEffect和localStorage的组合来解决我的用例
const selectProject = () => {
localStorage.removeItem("selected-project")
history.push("/")
}
当用户选择新项目时:
function selectProject(customer_id: string, project_id: string){
const projectUrl = `/customer/${customer_id}/project/${project_id}`
localStorage.setItem("selected-project", projectUrl)
history.push(projectUrl)
}
当用户从其他网站返回时。如果本地存储中有什么东西,就把他送到那里
useEffect(() => {
const projectUrl = localStorage.getItem("selected-project")
if (projectUrl) {
history.push(projectUrl)
}
}, [history])
当用户退出项目时,清空localStorage
const selectProject = () => {
localStorage.removeItem("selected-project")
history.push("/")
}
还有document.referer,如果您通过链接到达当前页面(但不是通过书签或在地址栏中键入)。我最终将以前的url存储在网站的Cookie中,
document.referer
并不总是有效<代码>$.cookie(“previousUrl”,window.location.href,{path:“/”})你把我从痛苦的JavaScript世界中救了出来!以前的不是推荐人。不要混淆文档。引用者不会保存上一个url的哈希值。。。它只引用最后一个url。在IE 9中为我工作如何知道url,href=''?@summu它存储在浏览器中它自己可以告诉我在reactjs上的相同事情吗?在我最新的测试“document.referer”中,现在只返回域名而不是完整的url以避免跟踪。OP询问如何获取,而不是如何转到上一个url