`window.onhashchange` is different than `('onhashchange' in window) `