当用户更改页面的哈希时,我使用该window.onhashchange
函数执行代码:
window.onhashchange = function() { /* do something */ };
在某些函数中,我还通过 JavaScript 设置哈希:
window.location.hash = "#abc";
当我通过 JavaScript 设置哈希时,我想防止onhashchange
事件触发。
到目前为止我已经尝试过:
var currently_setting_hash = false;
window.onhashchange = function() {
if (currently_setting_hash)
return;
//...
}
currently_setting_hash = true;
window.location.hash = "#abc";
currently_setting_hash = false;
这不起作用,因为事件被延迟触发,所以代码将首先设置哈希,然后设置currently_setting_hash
为 false,然后执行onhashchange
事件。
任何想法如何实现?或者也许有办法检测哈希是由用户设置还是通过 JavaScript 设置的?