我曾经假设我可以简单地将onhashchange事件处理程序设置为null,更改散列,然后将onhashchange事件处理程序设置为某些内容,但请考虑以下代码:暂时禁用JS事件并学习JS事件处理如何工作
window.onhashchange = null;
window.location.hash = "this_should_not_concern_you";
window.onhashchange = function() {alert('chunky bacon')};
doOtherStuff();
因此,当has被改变时,没有事件处理程序用于散列更改,但我仍然收到“矮胖培根”的警报。
更新 我选择去与杰德的setInterval的解决方案。尽管它很有用(谢谢Jed),但它很丑,很脆弱。如果有一个(有点矛盾的)onAllEventsHandled
事件,那么我可以把我的onhashchange订阅在那里,并确保我不会意外地警告“矮胖培根”,因为doOtherStuff()
需要2秒钟才能完成。
+1对于矮胖培根..只是说在 –