gpt4 book ai didi

javascript - 添加后窗口 hashchange 监听器调用

转载 作者:行者123 更新时间:2023-11-29 20:03:18 25 4
gpt4 key购买 nike

overlay.onclick = function(e){
e.preventDefault();
window.location.hash = 'overlay';

var close = function(){
//do some stuff
window.removeEventListener('hashchange', close);
}

window.addEventListener('hashchange', close, false);
}

基本上,只要我点击链接,哈希就会更新,关闭函数就会被调用。在更改哈希之前,不应绑定(bind)关闭函数。为什么在添加监听器后立即调用 close 函数,我该如何防止它。在 Chrome 中测试,最新版本。

最佳答案

我认为是因为Javascript是同步的,所以当你设置window.location.hash时,window.onhashchange方法直到onclick<才会运行 当前运行的函数完成。那有意义吗?因此,您设置了 .hash 值,然后绑定(bind)了一个 hashchange 事件……在绑定(bind)之后,onhashchange 事件实际上触发了。这样依次调用 close。尝试在整个代码中放置 console.log 语句以查看执行顺序。

更新:

这是一个演示事物顺序的 fiddle :http://jsfiddle.net/jmWDY/

请注意如何首先调用原始的 onhashchange 函数(在您的函数完成后),然后是您的新绑定(bind)(即 close)。我希望这对您有所帮助!

关于javascript - 添加后窗口 hashchange 监听器调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13200876/

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