假设当前的URL是 http://example.com:1234/test.htm#part2:
<script type="text/javascript">
document.write(location.hash);
</script>
结果为:
#part2
location.hash就是获取或设置喵链接的。
当我们载入一个页面后,然后又去触发了一个AJAX请求去部分改变了页面上的内容,这个时候,你会发现,浏览 器其实并没有记录这两个动作,而是把这两个动作记录为了一个动作,即是认为你只打开一个页面,所以“前进/后退”按钮就没有用。无刷新的页面会导致我们丢失本该有的浏览器历史记录,通常我们需要通过url hash来手动的产生浏览器历史记录,从而使“后退”/“前进”按钮有效。有“后退”/“前进”功能的页面才是一个好页面。
另外,即使不是AJAX动作,就是我们一些平常的JS动作,可能我们在JS里面改变了页面的数据、样式等,比如我们首先执行了JS函数A,把页面由白色变成了红色,在执行了JS函数B,把页面由红色变成了黑色,这个时候我想退回到页面为红色的状态,那么该怎么办?如果没有location.hash,我们只有重新载入页面,在去触发执行函数A,因为对于这些事件,浏览器是没有历史记录的,“前进、后退”按钮不能用的,这样显然太麻烦了,对用户不是很友好。有了location.hash我们就有办法了,在函数A和函数B里面加一段代码,location.hash=A这样,执行到该代码后,就相当于触发了喵链接,大家都知道喵链接是不会让页面重新载入的,只是在页面内部定位而已,所以不会造成其他坏的影响,但是细心的你会发现执行了该代码后,“前进、后退”按钮就可以用了,你可以从容的回退到你想要的任何一步操作了,真是方便,对用户也很友好。
onhashchange事件就是当喵链接发生改变的时候触发的。