調整 window.location.hash 而不捲動視窗
  • 2,485 views,
  • 2014-07-03,
  • 上傳者: 洪國恩,
  •  0
在網址列上使用 # 的方式可以直接定位到某個位置。如果希望某些動作 (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 貌似不支援.... cool
註:
Facebook 討論區載入中...
資料夾 :
發表時間 :
2014-07-03 07:32:18
觀看數 :
2,485
發表人 :
洪國恩
部門 :
老洪的 IT 學習系統
QR Code :