页面历史记录 - 后退按钮存在?

时间:2009-06-11 16:46:40

标签: javascript

是否可以检查history.go(-1)是否有值?我知道你不能直接访问history.previous。

我试图远离document.referrer,因为我知道在某些情况下它可以被阻止。

这是我想要做的。我有一个错误页面,在这个页面上我想要一个BACK按钮(如果它不是历史上唯一的项目)或关闭按钮(如果是)。

5 个答案:

答案 0 :(得分:20)

if (history.length) {
    //There is history to go back to
    history.go(-1);
}    

答案 1 :(得分:12)

实际上,history.length总是一个或多个,因为当前页面很重要。此外,如果您有前向历史记录(即您使用后退按钮),那么这些页面也会计算在内。所以你需要一个更复杂的检查:

if( (1 < history.length) && document.referrer ) {

答案 2 :(得分:2)

如果历史记录的长度大于0,则它至少包含一个历史记录点。

if (history.length)

答案 3 :(得分:2)

没有跨浏览器方法来实现这一目标。即使没有历史记录条目,也可以设置Document.Referrer。

我想出了以下内容&#34; hack&#34;。它利用onbeforeunload事件来检测浏览器是否开始离开页面。如果它不在某个时间跨度内,它只会重定向到后备。

window.goBack = function goBack(fallback){
  var useFallback = true;
  window.onbeforeunload = function(){
    useFallback = false;
  }
  window.history.back();

  setTimeout(function(){
    if (useFallback){ window.location.href = fallback; }
  }, 100); 
}

您可以使用goBack("fallback.example.org")调用此功能。

其中一个用例是您可能希望向任何页面添加后退按钮,并且还希望确保即使用户直接访问此页面也可以使用此后退按钮(例如,通过书签,直接链接等)

因此,无论是执行history.back()还是没有条目,它都会重定向到后备。

答案 4 :(得分:-1)

 function test() {
        document.URL = document.referrer;            
    }