我有一个像这样的事件监听器:
window.addEventListener('hashchange', () => setTimeout(() => this.handleHashChange(), 0));
然后,在这个handleHashChange
函数中,我有一些用于滚动到页面上元素的逻辑。考虑到折叠/展开收割台所需的空间。如果我从#mission
转到#team
,这很好。问题是当我单击#team
两次时。由于哈希保持不变,它不会进入事件侦听器,而是返回到默认的浏览器滚动。然后,我的头放在元素的顶部,没有留下足够的空间。有没有办法覆盖它?
可以是jquery或香草JS
如果您想在不直接更改哈希的情况下强制执行hashchcange事件,您应该调用:window.dispatchEvent(new HashChangeEvent("hashchange"))
此处的相关问题