Javascript 检查window.history.go是否成功?

Javascript 检查window.history.go是否成功?,javascript,Javascript,是否仍要检查window.history.go命令是否成功更改window.location i、 e.如果我在历史堆栈中只有3页时执行window.history.go(-5),浏览器将什么也不做 有没有办法检查是否发生这种情况并运行其他代码?类似的错误回调 谢谢 要获得即时响应,首先您需要检查历史记录.长度,以确保它至少为6,例如,要转到-5。除此之外,我认为唯一的方法是使用setTimeout,如果脚本仍在运行,则将执行回调。不是真正的JS专家,但如果您想在用户返回或前进时执行某些操作,则

是否仍要检查
window.history.go
命令是否成功更改
window.location

i、 e.如果我在历史堆栈中只有3页时执行
window.history.go(-5)
,浏览器将什么也不做

有没有办法检查是否发生这种情况并运行其他代码?类似的错误回调


谢谢

要获得即时响应,首先您需要检查
历史记录.长度
,以确保它至少为
6
,例如,要转到
-5
。除此之外,我认为唯一的方法是使用
setTimeout
,如果脚本仍在运行,则将执行回调。

不是真正的JS专家,但如果您想在用户返回或前进时执行某些操作,则可以使用URL哈希并使用jQuery onhashchange事件触发某些函数。这不会给你在历史上的位置,我也不确定跨浏览器的兼容性,但到目前为止它为我做了工作

$(window).on('load' function(){
    var hash = parent.top.location.hash;
    if(hash == '' || hash == '#' || hash == null){
        //if none, set a hash and reload page
        parent.top.location.hash = '#/some/hash';
        parent.top.location.reload(true);//use true if you dont want to use cached items
    }
});
$(window).on('hashchange', function(){
    do_something(parent.top.location.hash);
});
function do_something(hash){
    //this function will be executed each time the '#' changes
    console.log('hash changed to '+hash);
}

嗯,我实际上在做
window.history.go(-(window.length-1))
,所以我不确定如何以一种有用的方式检查
history.length
。我想我会试试
setTimeout
方法,看看这是否适用于此目的…@leomancini:
如果(window.length>=history.length)
那么它就不可能工作了。我打字打错了。我的意思是说我正在做
window.history.go(-(window.history.length-1))@leomancini:你想回到历史吗?我认为有更好的方法。@leomancini:Try
window.history.go(-window.history.length-1));对于(var i=1;i