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:Trywindow.history.go(-window.history.length-1));对于(var i=1;i