如何在JavaScript中获取以前的URL?

Lan*_*ard 206 javascript

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

alert("previous url is: " + window.history.previous.href);
Run Code Online (Sandbox Code Playgroud)

有类似的东西吗?或者我应该将它存储在cookie中?我只需要知道,所以我可以从之前的URL转换到当前的URL而不需要锚点和所有这些.

Ben*_*tto 314

document.referrer
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 我最终将以前的网址存储在网站的cookie中,`document.referrer`并不总是有效.`$ .cookie("previousUrl",window.location.href,{path:"/"});`. (63认同)
  • 以前不是推荐人.不要混淆他们 (7认同)
  • 仅供参考:“document.referrer”将仅提供“主机名”,而不是整个“href”。 (5认同)
  • 还有document.referrer,如果您通过链接到达当前页面(但不是,例如,通过书签或在地址栏中键入). (4认同)
  • 你先生让我摆脱了JavaScript痛苦的世界! (4认同)
  • document.referrer 不保存最后一个 url 的哈希值...它只引用最后一个 url。 (3认同)

RPD*_*ies 24

如果您想在不知道网址的情况下转到上一页,可以使用新的历史记录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.
Run Code Online (Sandbox Code Playgroud)

但是,您无法在不支持HTML5 History API的浏览器上操纵历史堆栈的内容

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

  • 如何通过知道 url 来实现,href = ''? (4认同)

小智 17

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

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

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

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

  • 根据我最新的测试,“document.referrer”现在只返回域名而不是完整的 URL,以避免跟踪。 (5认同)

565*_*565 5

<script type="text/javascript">
    document.write(document.referrer);
</script>
Run Code Online (Sandbox Code Playgroud)

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

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


Jon*_*Lin 5

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

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

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

window.history.state.prevUrl // your previous url
Run Code Online (Sandbox Code Playgroud)