gpt4 book ai didi

javascript - 在不触发 hashchange 事件的情况下以编程方式更新哈希?

转载 作者:数据小太阳 更新时间:2023-10-29 04:19:53 26 4
gpt4 key购买 nike

我正在使用 jQuery BBQ 插件将状态推送到 location.hash。

为了防止反馈循环,我想在以编程方式设置状态时暂时禁用 hashchange 监听器。

我见过这个解决方案: Change hash without triggering a hashchange event

不幸的是,它似乎并不完美,因为它有时会触发,即使我这样做:

updateURL(obj){
$(window).unbind( 'hashchange');
$.bbq.pushState(obj);
setTimeout( function() { bindHashChange()}, 500);
}

现在是否有更好的方法以编程方式推送状态?也许是另一个 JS 库?

最佳答案

在超时的情况下执行此操作将无法可靠地工作。链接答案的重要部分是设置您的处理程序知道的标志。请参阅更新的问题以获取代码。

或者,将临时处理程序绑定(bind)到负责重新建立处理程序的事件:

function updateState(state, handler) {
var win = $(window);

function temporaryHandler() {
win.unbind('hashchange', temporaryHandler);
win.bind('hashchange', handler);
};

win.unbind('hashchange', handler);
win.bind('hashchange', temporaryHandler);

$.bbq.pushState(state);
}

关于javascript - 在不触发 hashchange 事件的情况下以编程方式更新哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7058037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com