hashchange事件的妙用

hashchange是什么供填?

hash即URL中“#”字符后面的部分罢猪。使用瀏覽器訪問網(wǎng)頁時,如果網(wǎng)頁URL中帶有hash膳帕,頁面就會定位到id(或name)與hash值一樣的元素的位置,故而又稱之為錨點危彩。hash還有另一個特點,它的改變不會導致頁面重新加載娩缰,因此在單頁應(yīng)用流行的當下,它的用處就更多了拼坎。

而hashchange事件,顧名思義泰鸡,就是hash改變時觸發(fā)的事件。在 caniuse.com 上查一下兼容性可以發(fā)現(xiàn)盛龄,IE8就已經(jīng)支持該事件,但一直以來應(yīng)用甚少啊鸭。

hashchange兼容性.jpg

hashchange事件觸發(fā)時,事件對象會有hash改變前的URL(oldURL)和hash改變后的URL(newURL)兩個屬性:

window.addEventListener('hashchange', function(e) {
  console.log(e.oldURL);
  console.log(e.newURL);
}, false);

它有什么用欧芽?

移動端里有這樣一個功能葛圃,點擊小圖時在當前頁面上展示大圖:

實際應(yīng)用.jpg

CSS和Javascript具體怎么實現(xiàn)的就不再啰嗦了,這里要考慮的問題是:當進入大圖展示狀態(tài)時库正,如何返回?這是手機的頁面龙誊,對于用慣APP的用戶來說,他很可能會點擊左下角的返回鍵趟大。然而這是個瀏覽器铣焊,返回就意味著回到上一頁而不是退出大圖展示狀態(tài)逊朽。

下面講解一下如何利用hashchange解決這個問題曲伊。當URL的hash改變時,雖然頁面不會重新加載坟募,但仍然會被記錄到瀏覽器的歷史記錄中。也就是說涤妒,如果依次訪問a.html赚哗、b.html铁坎、b.html#abc,然后點擊后退硬萍,此時會返回b.html而不是a.html围详。而且朴乖,由于hash改變了助赞,所以會觸發(fā)hashchange事件。這樣一來畜普,只要在進入大圖展示狀態(tài)時加上一個特定的hash群叶,點擊返回鍵觸發(fā)hashchange時退出此狀態(tài)即可吃挑。代碼實現(xiàn)也很簡單:

// 假設(shè)大圖展示狀態(tài)的hash為imgSlider
window.addEventListener('hashchange', function(e) {
  var re = /#imgSlider$/;
  if ( re.test(e.oldURL) && !re.test(e.newURL) ) {
    // 假設(shè)imgSlider為大圖展示組件對象
    imgSlider.hide();
  }
}, false);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舶衬,一起剝皮案震驚了整個濱河市赎离,隨后出現(xiàn)的幾起案子逛犹,更是在濱河造成了極大的恐慌梁剔,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件码撰,死亡現(xiàn)場離奇詭異众雷,居然都是意外死亡,警方通過查閱死者的電腦和手機砾省,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來编兄,“玉大人,你說我怎么就攤上這事狠鸳∶跎ぃ” “怎么了卸察?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坑质。 經(jīng)常有香客問我,道長稼跳,這世上最難降的妖魔是什么吃沪? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮票彪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锉屈。我一直安慰自己荤傲,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布终佛。 她就那樣靜靜地躺著雾家,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芯咧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天邪铲,我揣著相機與錄音,去河邊找鬼带到。 笑死英染,一個胖子當著我的面吹牛揽惹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狭握,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼疯溺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了喝检?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤澡谭,失蹤者是張志新(化名)和其女友劉穎损俭,沒想到半個月后蛙奖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杆兵,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年攒砖,在試婚紗的時候發(fā)現(xiàn)自己被綠了日裙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡昂拂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鼻听,到底是詐尸還是另有隱情,我是刑警寧澤撑碴,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布碎连,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏廉嚼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一恐似、第九天 我趴在偏房一處隱蔽的房頂上張望傍念。 院中可真熱鬧矫夷,春花似錦憋槐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘶摊。三九已至评矩,卻和暖如春叶堆,著一層夾襖步出監(jiān)牢的瞬間斥杜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工上枕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓返弹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親义起。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容