在網址列上使用 # 的方式可以直接定位到某個位置。如果希望某些動作 (ex: tab) 被點擊時也跟著改變網址上的 hash 值,就會發生視窗捲動的現象。(因為改變 window.location.hash 之後,瀏覽器會重新觸發 hash 的事件,進而調整捲軸到那個定點。
如果不要視窗捲動,又要改掉 hash 值該怎麼做呢? 其實有個很技巧的方式,就是改變 id 值! 做法如下:
function changeHash(hashid) { $('#' + hashid).attr('id', hashid + '-tmp'); window.location.hash = '#' + hashid; $('#' + hashid + '-tmp').attr('id', hashid); }
雖然改掉 id 感覺怕怕的,但是查了文件,並沒有說 id 是 readonly 或是不可更動的。實際測試各個不同的瀏覽器也都支援,所以就大膽的用吧!
或許你會問,為何不攔截 onHashChange 呢?
因為... 偷懶,而且 iphone 貌似不支援....
註:
Prev
Visual Event
Facebook 討論區載入中...
資料夾 :
發表時間 :
2014-07-03 07:32:18
觀看數 :
4,513
發表人 :
洪國恩
部門 :
老洪的 IT 學習系統
QR Code :