284: Use location.hash instead of history.pushState