检测非编程 url 哈希更改

Detect non-programmatic url hash changes

我正在使用 window.onhashchange 检测浏览器哈希更改。但是有没有办法只在散列以非编程方式更改时触发回调?

我不是问如何使用onhashchange。当我以编程方式设置哈希时,我试图避免触发它。

基本上,我想做类似的事情:

window.onhashchange = () => { /* ... */ };

但我不希望在代码执行以下操作时触发回调:

window.location.hash = 'hello-world';    

谢谢!

我最终通过简单地设置一个标志来解决它,这看起来像是一个 hack,但考虑到 JavaScript 执行环境是单线程的,应该可以正常工作。