如何使用JavaScript获取包括哈希片段的上一个URL?

11
我需要获取前一个URL以便重定向到上一页。我有一个URL,如www.mysite.com/users/register/#1
我使用document.referrer来获取前一个URL,但它不返回哈希部分(#1)。如何获取包括哈希部分的前一个URL?

1
这只是在您自己的域内,没有来自跨域的引用?您可以将先前的URL存储在本地存储或Cookie中。 - adeneo
2
这只是在询问您自己网站内的推荐吗?还是来自不同的来源? - T.J. Crowder
3
你看过window.history了吗? - MichaelK
2
可能是如何在Javascript中获取上一个URL?的重复问题。 - ADreNaLiNe-DJ
1
@adeneo 嗯...读一下问题:“我需要获取前一个URL以重定向到前一页”。那么... **window.history.back()**,嗯? - MichaelK
显示剩余3条评论
5个回答

11
如何使用JavaScript获取包括哈希片段的上一个URL?正如您所指出的,哈希片段的部分意味着您不能使用document.referrer。如果前一个页面与当前页面在同一个源(origin)上:则需要编写代码来记录完整的URL,例如存储在sessionStorage中。在前一个页面上,可能每次触发哈希更改(hashChange)事件时。
sessionStorage.setItem("last-url", location);

在新页面上获取 URL:

var lastUrl = sessionStorage.getItem("last-url");

如果前一页来源不同:我相当确定你不能这么做。

我需要获取上一个URL以重定向到上一页。

实际上,您并不需要这样做。您只需使用history.go(-1)history.back()即可完成此操作,它们无论前一页的来源如何都能正常工作。


2

也许你可以使用onhashchange事件。当URL改变时,它会产生一个事件,包含旧的URL和新的URL。旧的URL甚至包括哈希部分。


1
尝试访问先前的URL,
    function backtopage() {

    window.history.back();
}

原始答案完全错误。更新的答案只是复制了我的答案的一小部分。 - T.J. Crowder

0
$(window).bind('statechange',function(){
    // Prepare Variables
    var State = History.getState(),
        url = State.url,
        states = History.savedStates,
        prevUrlIndex = states.length - 2,
        prevUrl = states[prevUrlIndex].hash;
});

-1

Try this one::

In previous page url:
www.mysite.com/users/register/#1

In Current Page:
$(document).ready(function() {
   var referrerUrl =   document.referrer.replace("#","e");
   var correctUrl=referrerUrl.replace("e","#");
});


1
正如问题明确所述:document.referrer不包括哈希片段。 - T.J. Crowder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接