有什么办法可以在JavaScript中获取以前的URL?这样的事情:

alert("previous url is: " + window.history.previous.href);


是否有类似的东西?还是应该将其存储在Cookie中?我只需要知道,就可以在没有锚的情况下从先前的URL过渡到当前的URL。

#1 楼

document.referrer


在很多情况下,如果用户通过单击链接进入当前页面(相对于直接在地址栏中键入内容,或者相信某些内容,则可以获取用户访问的最后一页的URL)情况,通过提交表格?)。由DOM级别2指定。更多信息。

window.history允许导航,但出于安全和隐私原因,不允许访问会话中的URL。如果有更详细的URL历史记录,则您访问的每个站点都可以看到您去过的所有其他站点。

如果您要处理在自己站点中移动的状态,那么使用一种常规的会话管理技术(cookie数据,URL参数或服务器端会话)可能不那么脆弱,而且肯定会更有用。信息

评论


还有一个document.referrer,如果您是通过链接到达当前页面的(例如,不是通过书签或在地址栏中键入)。

–地狱犬
10年8月20日在5:18

我最终将以前的URL存储在该站点的Cookie中,document.referrer并不总是有效。 $ .cookie(“ previousUrl”,window.location.href,{path:“ /”}));。

–兰斯·波拉德
2010年8月23日在16:32



您的先生让我从JavaScript的痛苦中解救了出来!

–Anna Lam
2012年9月20日下午5:03

以前不是引荐来源。不要混淆他们

–绿色
2015年11月20日9:04



document.referrer不会保存来自上一个URL的哈希值……它仅引用上一个URL。

– Nmaster88
17年5月8日在9:35

#2 楼

如果您想在不知道URL的情况下转到上一页,则可以使用新的History 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的浏览器上的堆栈

有关更多信息,请参阅doc

评论


知道网址,href =''怎么办?

– summu
19年5月25日在11:51

@summu它存储在浏览器本身中

–艾哈迈德·塔哈(Ahmed Taha)
5月19日16:10

#3 楼

在所有情况下,document.referrer均与实际网址不同。

我有一个应用程序,需要在其中建立2个框架的框架集。一帧是已知的,另一帧是我要链接的页面。 document.referrer似乎是理想的选择,因为您不必将实际文件名传递给框架集文档。

但是,如果稍后更改底部框架页面然后使用history.back(),则不会加载将原始页面放到底部框架中,而是重新加载document.referrer,结果框架集消失了,您又回到了原始开始窗口。

花些时间让我理解。因此,在历史记录数组中,document.referrer不仅是URL,而且显然也是引用程序窗口规范。至少,这是我目前可以理解的最好方法。

评论


从我最近的测试“ document.referrer”开始,现在只返回域名而不是完整的URL,以避免进行跟踪。

– Akash Kumar Seth
19-10-10在7:46

#4 楼

如果要编写在应用程序/浏览器中进行路由而不是往返于服务器的Web应用程序或单页应用程序(SPA),则可以执行以下操作:

 window.history.pushState({ prevUrl: window.location.href }, null, "/new/path/in/your/app")
 


然后,在新路径中,您可以执行以下操作来检索先前的URL:

< pre class =“ lang-js prettyprint-override”> window.history.state.prevUrl // your previous url

#5 楼

<script type="text/javascript">
    document.write(document.referrer);
</script>


document.referrer符合您的目的,但不适用于IE9之前的Internet Explorer版本。 ,Safari等

评论


我可以在IE 9中使用

– frodo2975
2015年12月30日15:59

#6 楼

那些使用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是另一个网站,清理或创建会话(首次加载网站)的实例上,该网址将不可用。

#7 楼

这将导航到先前访问的URL。

javascript:history.go(-1)


评论


OP要求获取而不是去往上一个URL的方法

–马特·詹森(Matt Jensen)
19-10-19在16:11