是否可以检查history.go(-1)是否有值?我知道你不能直接访问history.previous。
我试图远离document.referrer,因为我知道在某些情况下它可以被阻止。
这是我想要做的。我有一个错误页面,在这个页面上我想要一个BACK按钮(如果它不是历史上唯一的项目)或关闭按钮(如果是)。
答案 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;
}