在網址列上使用 # 的方式可以直接定位到某個位置。如果希望某些動作 (ex: tab) 被點擊時也跟著改變網址上的 hash 值,就會發生視窗捲動的現象。(因為改變 window.location.hash 之後,瀏覽器會重新觸發 hash 的事件,進而調整捲軸到那個定點。
function changeHash(hashid) {
$('#' + hashid).attr('id', hashid + '-tmp');
window.location.hash = '#' + hashid;
$('#' + hashid + '-tmp').attr('id', hashid);
}
雖然改掉 id 感覺怕怕的,但是查了文件,並沒有說 id 是 readonly 或是不可更動的。實際測試各個不同的瀏覽器也都支援,所以就大膽的用吧!
或許你會問,為何不攔截 onHashChange 呢?
因為... 偷懶,而且 iphone 貌似不支援....