如何在 JavaScript 中获取上一个 URL?

IT技术 javascript
2021-02-08 20:40:14

有没有办法在 JavaScript 中获取以前的 URL?像这样的东西:

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

有这样的吗?还是我应该将它存储在 cookie 中?我只需要知道这样我就可以在没有锚点的情况下从上一个 URL 转换到当前 URL。

6个回答
document.referrer

在许多情况下,如果用户通过单击链接进入当前页面(而不是直接在地址栏中输入,或者我相信在某些情况下,通过提交表单?),将获得用户访问的最后一页的 URL。DOM Level 2指定更多在这里。

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

如果您正在处理在您自己的站点上移动的状态,那么使用一种正常的会话管理技术可能不那么脆弱,当然更有用:cookie 数据、URL 参数或服务器端会话信息。

还有 document.referrer,如果您是通过链接(但不是,例如,通过书签或在地址栏中键入)到达当前页面的。
2021-03-30 20:40:14
previous 不是referrer。不要混淆他们
2021-03-31 20:40:14
你先生让我摆脱了 JavaScript 的痛苦!
2021-04-05 20:40:14
我最终将以前的网址存储在网站的 cookie 中,document.referrer但并不总是有效。 $.cookie("previousUrl", window.location.href, {path:"/"});.
2021-04-06 20:40:14
document.referrer 不保存最后一个 url 的哈希值......它只引用最后一个 url。
2021-04-06 20:40:14

如果您想在不知道 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 History API 的浏览器上操作历史堆栈的内容

有关更多信息,请参阅文档

如何通过知道 url 来实现,href = ''?
2021-03-18 20:40:14
你能在 reactjs 上告诉我同样的事情吗?
2021-03-19 20:40:14
@summu 它存储在浏览器本身中
2021-03-20 20:40:14

如果您正在编写 Web 应用程序或单页应用程序 (SPA),其中路由发生在应用程序/浏览器中而不是往返服务器,您可以执行以下操作:

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

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

window.history.state.prevUrl // your previous url
找不到prevURl?怎么找呢?我将需要历史记录中的两个三个以前的网址。?
2021-04-03 20:40:14

document.referrer 在所有情况下都与实际 URL 不同。

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

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

我花了一点时间才明白这一点。所以在历史数组中,document.referrer不仅是一个 URL,它显然也是引用窗口规范。至少,这是我目前能理解的最好方式。

截至我最近的测试“document.referrer”现在只返回域名而不是完整的 URL 以避免跟踪。
2021-04-02 20:40:14
<script type="text/javascript">
    document.write(document.referrer);
</script>

document.referrer 为您的目的服务,但它不适用于 IE9 之前的 Internet Explorer 版本。

它适用于其他流行的浏览器,如 Chrome、Mozilla、Opera、Safari 等。

适用于我的 IE 9
2021-03-26 20:40:14