onhashchange is back