Если вам не нужно поддерживать старые браузеры, такие как IE6 и IE7, вы можете использовать:
window.onhashchange = function(){
switch(location.hash) {
case '#hash1':
//do something
break;
case '#has2':
//do something else
break;
}
}
Но если вам нужно поддерживать старые браузеры, вам нужно опросить:
var oldHash = location.hash;
setInterval(function(){
if(location.hash !== oldHash){
oldHash = location.hash;
//hash changed do something
}
}, 120);