有没有检查window.history.go
命令是否成功更改window.location
?
即。如果我在历史堆栈中只有3个页面时执行window.history.go(-5)
,则浏览器将不执行任何操作。
有没有办法检查是否发生这种情况并运行其他代码?错误回调,各种各样。
感谢。
答案 0 :(得分:3)
要立即回复,首先您需要检查history.length
以确保其至少为6
,例如去-5
。除此之外,我认为唯一的方法是使用setTimeout
,如果脚本仍在运行,则将执行回调。
答案 1 :(得分:0)
不是真正的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);
}