我正在使用 jQuery BBQ 插件将状态推送到 location.hash。
为了防止反馈循环,我想在以编程方式设置状态时暂时禁用 hashchange 侦听器。
我见过这个解决方案: 更改哈希而不触发 hashchange 事件
不幸的是,它似乎并不完美,因为即使我这样做,它有时也会触发:
updateURL(obj){
$(window).unbind( 'hashchange');
$.bbq.pushState(obj);
setTimeout( function() { bindHashChange()}, 500);
}
现在有更好的方法来以编程方式推动状态吗?也许另一个 JS 库?