【问题标题】:History API: Javascript Pushstate, get previous URLHistory API:Javascript Pushstate,获取上一个 URL
【发布时间】:2012-10-29 05:19:57
【问题描述】:
$(window).bind('statechange',function(){
     var State = History.getState(),
     url = State.url;
});

在以下函数中,url 返回当前 URL。我正在寻找的是,在该函数中,获取以前的 URL,例如,如果我在 /cars/ferrari 并转到 /cars/fordurl 将返回 cars/ford,但我想获取/cars/ferrari

如何在 statechange 事件中获取上一个 URL?

【问题讨论】:

  • 当您通过 pushState 导航时,我会将当前网址保存在某处。

标签: url history.js html5-history


【解决方案1】:
$(window).bind('statechange',function(){
    // Prepare Variables
    var State = History.getState(),
        url = State.url,
        states = History.savedStates,
        prevUrlIndex = states.length - 2,
        prevUrl = states[prevUrlIndex].hash;
});

这似乎可以解决问题! prevUrl 给了我想要的 URL。

【讨论】:

  • 这需要 History.js,是吗?
  • $(window).bind('statechange') 似乎对我没有任何影响
【解决方案2】:

我要做的就是将 URL 推送到状态对象,以便您可以再次获取它。

所以当你使用 pushState 时:

history.pushState(
  {'previous_url': document.location.href}, 
  document.title,
  "?some_query_string"
);

然后,当您获得状态时,它将具有previous_url :)

【讨论】:

    【解决方案3】:

    试试这个:

    alert(document.referrer);
    

    注意:

    如果用户导航到页面,则该值为空字符串 直接(不是通过链接,而是,例如,通过书签)。自从 这个属性只返回一个字符串,它不给你 DOM 访问权限 到引用页面。

    在此处查看更多信息:https://developer.mozilla.org/en-US/docs/DOM/document.referrer?redirectlocale=en-US&redirectslug=document.referrer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-17
      • 2013-10-19
      • 1970-01-01
      • 2013-01-26
      • 2015-03-24
      • 2011-04-30
      • 1970-01-01
      • 2020-08-18
      相关资源
      最近更新 更多